码迷,mamicode.com
首页 > Web开发 > 详细

PHP验证码类

时间:2018-07-30 18:01:13      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:config   function   col   资源   head   tar   imagej   def   ges   

class Captcha{ //验证码宽 private $width; //验证码高度 private $height; //验证码长度 private $len; //验证码范围 private $str = "abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHJKLMNPQRSTUVWXYZ"; //字体地址 private $font_dir = ‘F:\phpStudy\PHPTutorial\WWW\php\code\4.ttf‘; //验证码资源 private $img; //验证码字符串 private $code; public function __construct($config=[‘width‘=>200,‘height‘=>50,‘len‘=>4]){ $this->width=$config[‘width‘]; $this->height=$config[‘height‘]; $this->len=$config[‘len‘]; } public function entry(){ $this->createBg(); $this->getCode(); $this->setCode(); $this->setLine(); $this->setDot(); $this->setBg(); } //生成画布 private function createBg(){ $this->img = imagecreate($this->width,$this->height); //分配验证码的背景颜色 imagecolorallocate($this->img,255,255,255); } //生成随机字符串 private function getCode(){ for($i=0;$i<$this->len;$i++){ $key = mt_rand(0,strlen($this->str)-1); $this->code .= $this->str[$key]; } $this->setSession(); } //把验证码存入session之后和用户输入的验证码做比较 private function setSession(){ session_start(); $_SESSION[‘code‘]=strtolower($this->code); } //输出验证码到画布 private function setCode(){ for($i=0;$i<$this->len;$i++){ $font_color = imagecolorallocate($this->img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100)); $x = ($this->width/$this->len)*$i+5; $fontSize = mt_rand(18,28); $fontHeight=imagefontheight($fontSize); $y= mt_rand($fontHeight+5,$this->height); imagettftext($this->img, $fontSize, mt_rand(-25,25), $x, $y, $font_color, $this->font_dir,$this->code[$i]); } } //画干扰线 private function setLine(){ for ($i=0; $i <$this->len ; $i++) { $line_color = imagecolorallocate($this->img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imageline($this->img, mt_rand(0,$this->width/$this->len), mt_rand(0,$this->height), mt_rand($this->width-$this->width/$this->len,$this->width), mt_rand(0,$this->height), $line_color); } } //画干扰点到画布 private function setDot(){ for ($i=0; $i < $this->width ; $i++) { $dot_color = imagecolorallocate($this->img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imagesetpixel($this->img, mt_rand(0,$this->width), mt_rand(0,$this->height), $dot_color); } } //输出成图像 private function setBg(){ ob_end_clean(); header(‘content-type:image/jpeg‘); imagejpeg($this->img); } public function __destruct(){ imagedestroy($this->img); } }

//输出验证码
$captcha = new Captcha();
$captcha->entry();

PHP验证码类

标签:config   function   col   资源   head   tar   imagej   def   ges   

原文地址:http://blog.51cto.com/woaijorden/2152267

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!