一个简单的PHP验证码类
<?php /** * @version1.0 * @PHP验证码类 * 使用方法: * $image=newCaptcha(); * $image->config('宽度','高度','字符个数','验证码session索引'); * $image->create(); * 如: * newCaptcha(80,20,4,'captcha_code'); * 所有参数都可以省略, * 默认是:宽80高20字符数4验证码session索引captcha_code * 第四个参数即把验证码存到$_SESSION['captcha_code'] * 最简单使用示例: * $image=newCaptcha(); * $image->create(); */ class Captcha { private $width=80,$height=20,$codenum=4; public $checkcode; //产生的验证码 private $checkimage; //验证码图片 private $disturbColor='';//干扰像素 private $session_flag='captcha_code';//存到session中的索引 //尝试开始session function __construct(){ @session_start(); } /* *参数:(宽度,高度,字符个数) */ function config($width='80',$height='20',$codenum='4',$session_flag='captcha_code') { $this->width=$width; $this->height=$height; $this->codenum=$codenum; $this->session_flag=$session_flag; } function create() { //输出头 $this->outFileHeader(); //产生验证码 $this->createCode(); //产生图片 $this->createImage(); //设置干扰像素 $this->setDisturbColor(); //往图片上写验证码 $this->writeCheckCodeToImage(); imagepng($this->checkimage); imagedestroy($this->checkimage); $_SESSION[$this->session_flag]=$this->checkcode; } /* *@brief输出头 */ private function outFileHeader() { header("Content-type:image/png"); } /** *产生验证码 */ private function createCode() { $this->checkcode=strtoupper(substr(md5(rand()),0,$this->codenum)); } /** *产生验证码图片 */ private function createImage() { $this->checkimage=@imagecreate($this->width,$this->height); $back=imagecolorallocate($this->checkimage,255,255,255); $border=imagecolorallocate($this->checkimage,0,0,0); imagefilledrectangle($this->checkimage,0,0,$this->width-1,$this->height-1,$back);//白色底 imagerectangle($this->checkimage,0,0,$this->width-1,$this->height-1,$border);//黑色边框 } /** *设置图片的干扰像素 */ private function setDisturbColor() { for($i=0;$i<=200;$i++) { $this->disturbColor=imagecolorallocate($this->checkimage,rand(0,255),rand(0,255),rand(0,255)); imagesetpixel($this->checkimage,rand(2,128),rand(2,38),$this->disturbColor); } } /** * *在验证码图片上逐个画上验证码 * */ private function writeCheckCodeToImage() { for($i=0;$i<$this->codenum;$i++) { $bg_color=imagecolorallocate($this->checkimage,rand(0,255),rand(0,128),rand(0,255)); $x=floor($this->width/$this->codenum)*$i; $y=rand(0,$this->height-15); imagechar($this->checkimage,rand(5,8),$x+5,$y,$this->checkcode[$i],$bg_color); } } function __destruct() { unset($this->width,$this->height,$this->codenum,$this->session_flag); } } ?>
文章来源 CODETC,欢迎分享,转载请注明地址:
http://www.codetc.com/article-11-1.html
|