>  기사  >  백엔드 개발  >  php写验证码类

php写验证码类

WBOY
WBOY원래의
2016-06-23 14:31:131204검색

简介:这是php写验证码类的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。

class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=341730' scrolling='no'>

前一段时间我写了个验证码函数, 今天做成了验证码类 有助于面向对象编程。

img.php

 1 <?php 2 /** 3 * QQ:279861795 4 * Author: gwyy 5 * Date: 2011-7-01 6 *通用验证码类 7 *版本:V0.1 8 */ 9 10 class ValidateCode {11      private  $charset="abcdefghizklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";   //随机因子  12      private  $code;     //验证码文字13      private  $codelen=4;    //验证码显示几个文字14      private  $width=130;   //验证码宽度15      private  $height=50;   //验证码高度16      private  $img;       //验证码资源句柄17      private  $font;     //指定的字体18      private  $fontsize=20;  //指定的字体大小19      private  $fontcolor;     //字体颜色  随机20   21      //构造类  编写字体22      public  function __construct(){23          $this->font=ROOT_PATH.'/font/elephant.ttf';24      }25      //创建4个随机码26      private function createCode(){27          $_leng=strlen($this->charset);28          for($i=1;$i<=$this->codelen;$i++){29              $this->code.=$this->charset[mt_rand(0,$_leng)];30          }31          return $this->code;32      }33     34      //创建背景35      private function createBg(){36          //创建画布 给一个资源jubing37          $this->img=imagecreatetruecolor($this->width,$this->height);38          //背景颜色39          $color=imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));40         //画出一个矩形41         imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);42      }43     44      //创建字体45      private  function createFont(){46          $_x=($this->width / $this->codelen);   //字体长度47          for ($i=0;$i<$this->codelen;$i++){48              //文字颜色49              $color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));50              //资源句柄 字体大小 倾斜度 字体长度  字体高度  字体颜色  字体  具体文本51              imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height/1.4,$color,$this->font,$this->code[$i]);52          }53      }54      //随机线条55      private function createLine(){56          //随机线条57          for ($i=0;$i<6;$i++){58              $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));59              imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);60          }61          //随机雪花62          for ($i=0;$i<45;$i++){63              $color = imagecolorallocate($this->img,mt_rand(220,255),mt_rand(220,255),mt_rand(220,255));64              imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);65          }66      }67      //输出背景68      private  function outPut(){69           //生成标头70          header('ContentType:img/png');71          //输出图片72          imagepng($this->img);73          //销毁结果集74          imagedestroy($this->img);75      }76      //对外输出77      public  function doimg(){78          //加载背景79          $this->createBg();80          //加载文件81          $this->createCode();82          //加载线条83          $this->createLine();84          //加载字体85          $this->createFont();86          //加载背景87          $this->outPut();88  }89 90 //获取验证码91      public  function getCode(){92          return strtolower($this->code);93    }94 95 }96 97    ?>

其他页面调用方法

index.php

require 'img.php';

$img=new ValidateCode();

echo $img->doimg();

?>

                                                                                                                过往云烟 2011/07/29

爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具

http://biancheng.dnbcw.info/php/341730.html pageNo:6
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.