Home  >  Article  >  Backend Development  >  php写验证码类

php写验证码类

WBOY
WBOYOriginal
2016-06-23 14:31:131204browse

简介:这是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
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn