1.文件结构 CreateCaptcha.php //生成验证码类
index.html //验证码前端页面 create.php //生成验证码 verify.php //验证程序2.CreateCaptcha.php
imgWidth=100:$this->imgWidth=$imgWid; (empty($imgHei))?$this->imgHeight=30:$this->imgHeight=$imgHei; (empty($len))?$this->length=4:$this->length=$len; (empty($fontSize))?$this->fontSize=10:$this->fontSize=$fontSize; (empty($backdrop))?$this->backDrop=$backDrop:$this->backDrop=true; } /** *@param int $imgWid; *@param int $imgHei; *@param int $len; *@param int $fontSize; *@param bool $backDrop; *@return png; */ public function sendCaptcha() { // echo $this->backDrop;exit; // 开启session session_start(); //1.创建黑色画布 $image = imagecreatetruecolor($this->imgWidth, $this->imgHeight); //2.为画布定义(背景)颜色 $bgcolor = imagecolorallocate($image, 255, 255, 255); //3.填充颜色 imagefill($image, 0, 0, $bgcolor); // 4.设置验证码内容 //4.1 定义验证码的内容 $content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; //4.1 创建一个变量存储产生的验证码数据,便于用户提交核对 $captcha = ""; for ($i = 0; $i < $this->length; $i++) { // 字体大小 $fontsize = $this->fontSize; // 字体颜色 $fontcolor = imagecolorallocate($image, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200)); // 设置字体内容 $fontcontent = substr($content, mt_rand(0, strlen($content)), 1); $captcha .= $fontcontent; // 显示的坐标,居中 $x = ($i * $this->imgWidth / $this->length) + mt_rand(5, 8); $y = ($this->imgHeight-$this->fontSize*2)/2; // 填充内容到画布中 imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); } $_SESSION["captcha"] = $captcha; //是否加干扰 if ($this->backDrop) { //4.3 设置背景干扰元素 for ($$i = 0; $i < 200; $i++) { $pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200)); imagesetpixel($image, mt_rand(1, $this->imgWidth-1), mt_rand(1, $this->imgHeight-1), $pointcolor); } //4.4 设置干扰线 for ($i = 0; $i < $this->length; $i++) { $linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200)); imageline($image, mt_rand(1, $this->imgWidth-1), mt_rand(1, $this->imgHeight-1), mt_rand(1, $this->imgWidth-1), mt_rand(1, $this->imgHeight-1), $linecolor); } } //5.向浏览器输出图片头信息 header('content-type:image/png'); //6.输出图片到浏览器 imagepng($image); //7.销毁图片 imagedestroy($image); }}?>
3.index.html
验证码前端页面
4.create.php
sendCaptcha(); ?>
5.verify.php