[php]php做的图片验证码类实例源代码
[php]php做的图片验证码类实例源代码
[php]php做的图片验证码类实例源代码
- <?php
- //验证码类
- class ValidateCode {
- private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789'; //随机因子
- private $code; //验证码
- private $codelen = 4; //验证码长度
- private $width = 130; //宽度
- private $height = 50; //高度
- private $img; //图形资源句柄
- private $font; //指定的字体
- private $fontsize = 20; //指定字体大小
- private $fontcolor; //指定字体颜色
- //构造方法初始化
- public function __construct() {
- $this->font = ROOT_PATH.'/font/elephant.ttf';
- }
- //生成随机码
- private function createCode() {
- $_len = strlen($this->charset)-1;
- for ($i=0;$i<$this->codelen;$i++) {
- $this->code .= $this->charset[mt_rand(0,$_len)];
- }
- }
- //生成背景
- private function createBg() {
- $this->img = imagecreatetruecolor($this->width, $this->height);
- $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));
- imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
- }
- //生成文字
- private function createFont() {
- $_x = $this->width / $this->codelen;
- for ($i=0;$i<$this->codelen;$i++) {
- $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
- imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);
- }
- }
- //生成线条、雪花
- private function createLine() {
- for ($i=0;$i<6;$i++) {
- $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
- imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
- }
- for ($i=0;$i<100;$i++) {
- $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
- imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
- }
- }
- //输出
- private function outPut() {
- header('Content-type:image/png');
- imagepng($this->img);
- imagedestroy($this->img);
- }
- //对外生成
- public function doimg() {
- $this->createBg();
- $this->createCode();
- $this->createLine();
- $this->createFont();
- $this->outPut();
- }
- //获取验证码
- public function getCode() {
- return strtolower($this->code);
- }
- }
热门文章推荐
- [php]优酷真实视频地址解析算法
- [Dz]discuz手机版支持视频播放的方法
- [PHP]php加密js解密的方法实例
- [php]用PHP打印出前一天的时间格式
- [PHP]mpeg,mp3,avi的ffmpeg的php转换类
- [php]php中3DES加密一个非常有用的3des加密
- [PHP]php.ini修改上传文件的大小限制处理方法
- [php]用过的最好用的php分页类源代码
请稍候...