|  | 
 
| 万能php验证码类,供大家参考,具体内容如下
 code.php是验证码类,类的名称最好和文件名的名称一样,这样有利于我们的查看。
 code.php
 number=$number;
 $this->codeType=$codeType;
 $this->width = $width;
 $this->height= $height;
 
 //生成验证码函数
 $this->code = $this ->createCode();
 
 }
 public function __get($name){
 if ($name == 'code'){
 return $this->code;
 }
 return false;
 }
 /*获取验证码*/
 public function getCode() {
 return $this->code;
 }
 /*图像资源销毁*/
 public function __destruct(){
 imagedestroy($this->image);
 }
 protected function createCode(){
 //通过你的验证码类型生成验证码
 switch ($this->codeType){
 case 0: //纯数字
 $code = $this->getNumberCode();
 break;
 case 1: //纯字母的
 $code = $this->getCharCode();
 break;
 case 2: //数字和字母混合
 $code = $this->getNumCharCode();
 break;
 default:
 die('不支持此类验证码类型');
 }
 return $code;
 }
 protected function getNumberCode(){
 $str = join('', range(0, 9));
 return substr(str_shuffle($str),0, $this->number);
 }
 protected function getCharCode(){
 $str = join('', range('a', 'z'));
 $str = $str.strtoupper($str);
 return substr(str_shuffle($str),0,$this->number);
 }
 protected function getNumCharCode(){
 $numstr = join('',range(0, 9));
 $str =join('', range('a', 'z'));
 $str =$numstr.$str.strtoupper($str);
 return substr(str_shuffle($str), 0,$this->number);
 }
 protected function createImage(){
 $this->image = imagecreatetruecolor($this->width,
 $this->height);
 }
 protected function fillBack(){
 imagefill($this->image, 0, 0, $this->lightColor());
 }
 /*浅色*/
 protected function lightColor(){
 return imagecolorallocate($this->image, mt_rand(133,255), mt_rand(133,255), mt_rand(133,255));
 }
 /*深色*/
 protected function darkColor(){
 return imagecolorallocate($this->image, mt_rand(0,120), mt_rand(0,120), mt_rand(0,120));
 }
 protected function drawChar(){
 $width = ceil($this->width / $this->number);
 for ($i=0; $inumber;$i++){
 $x = mt_rand($i*$width+5, ($i+1)*$width-10);
 $y = mt_rand(0, $this->height -15);
 imagechar($this->image, 5, $x, $y, $this->code[$i], $this->darkColor());
 }
 }
 protected function drawLine(){
 for ($i=0;$iimage,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$this->darkColor());
 }
 }
 protected function drawDisturb(){
 for ($i=0;$iwidth);
 $y=mt_rand(0, $this->height);
 imagesetpixel($this->image, $x, $y, $this->lightColor());
 }
 }
 protected function show(){
 header('Content-Type:image/png');
 imagepng($this->image);
 }
 public function outImage(){
 //     创建画布
 $this->createImage();
 //     填充背景色
 $this->fillBack();
 //     将验证码字符串花到画布上
 $this->drawChar();
 //     添加干扰元素
 $this->drawDisturb();
 //     添加线条
 $this->drawLine();
 //     输出并显示
 $this->show();
 }
 }
 test.php是new一个新的验证码,并把它保存到session中,为我们验证码的验证起到保存和存储的作用。
 test.php
 getCode();
 $code->outImage();
 login.php就是最后的验证。
 login.php
 
 
 
 
 
 
 
 *{margin:0px;padding:0px;}
 ul{
 width:400px;
 list-style:none;
 margin:50px auto;
 }
 
 li{
 padding:12px;
 position:relative;
 }
 
 label{
 width:80px;
 display:inline-block;
 float:left;
 line-height:30px;
 }
 
 input[type='text'],input[type='password']{
 height:30px;
 }
 
 img{
 margin-left:10px;
 }
 
 input[type="submit"]{
 margin-left:80px;
 padding:5px 10px;
 }
 
 
 
 
 
 
 用户名:
 
 
 
 密码:
 
 
 
 验证码:
 
 
 
 ) 
 
 
 
 
 
 
 
 
 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
 
 
 您可能感兴趣的文章:php图片验证码代码PHP验证码类代码( 最新修改,完全定制化! )一个漂亮的php验证码类(分享)PHP生成图片验证码、点击切换实例PHP使用CURL实现对带有验证码的网站进行模拟登录的方法完美解决thinkphp验证码出错无法显示的方法php发送短信验证码完成注册功能PHP写的简单数字验证码实例php图像验证码生成代码php实现网页端验证码功能
 
 | 
 |