PHP封装的验证码工具类定义与用法示例

PHP封装的验证码工具类定义与用法。具体如下:

下面分享的是我自己封装的验证码工具类,在平时的项目中会比较经常用到的工具类,目前封装的这个工具类简易版的,如果有需要的伙伴可以拿去用,当然我建议用之前在配置文件里增加一些选项信息

  //验证码宽度  private $width;  //验证码高度  private $height;  //验证的个数  private $length;  //干扰点个数  private $dots;  //干扰点的类型  private $type;  //干扰线个数  private $lines;  //文字  private $font;

方便在项目中对验证码的要求进行更改,以方便项目逻辑的需求,而且验证码所选用的字体需要和验证码工具类放在同一目录下,否则就要在配置文件中修改字体的路径才能实现验证码的显示

  <?php  //创建验证码工具类  class captcha {   //验证码的各种参数   //验证码宽度   private $width;   //验证码高度   private $height;   //验证的个数   private $length;   //干扰点个数   private $dots;   //干扰点的类型   private $type;   //干扰线个数   private $lines;   //文字   private $font;   //验证码属性的构造方法   public function __construct($arr = array ()) {    //将属性赋值    $this->width = isset ($arr['width']) ? trim($arr['width']) : '270';    $this->height = isset ($arr['height']) ? trim($arr['height']) : '30';    $this->length = isset ($arr['length']) ? trim($arr['length']) : '4';    $this->dots = isset ($arr['dots']) ? trim($arr['dots']) : '81';    $this->type = isset ($arr['type']) ? trim($arr['type']) : '*';    $this->lines = isset ($arr['lines']) ? trim($arr['lines']) : '5';    $this->font = isset ($arr['font']) ? trim($arr['font']) : './cambriab.ttf';   }   //创建验证码的方法   public function captcha() {    //创建画布    $img = imagecreatetruecolor($this->width, $this->height);    //填充颜色    //颜色资源    $color = imagecolorallocate($img, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255));    //填充背景    imagefill($img, 0, 0, $color);    //添加干扰点    for ($i = 0; $i < $this->dots; $i++) {     //颜色资源     $dots_color = imagecolorallocate($img, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200));     //插入干扰点     imagestring($img, mt_rand(1, 5), mt_rand(0, $this->width), mt_rand(0, $this->height), $this->type, $dots_color);    }    //添加干扰线    for ($i = 0; $i < $this->lines; $i++) {     //颜色资源     $line_color = imagecolorallocate($img, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200));     //插入干扰线     imageline($img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $line_color);    }    //首先获取验证码,然后插入验证文字    //文字高度    $size = mt_rand(18, 20);    //获取验证码    $str = $this->captchastring();    for ($i = 0; $i < strlen($str); $i++) {     //颜色资源     $str_color = imagecolorallocate($img, mt_rand(50, 150), mt_rand(50, 150), mt_rand(50, 150));     //插入验证码     imagettftext($img, $size, mt_rand(-45, 45), $this->width / ($this->length + 2) * ($i +1), (($this->height - $size) / 2) + $size, $str_color, $this->font, $str[$i]);    }    //将得到的验证码存入SESSION中,便于以后的验证码判断    @ session_start();    $_SESSION['captcha'] = $str;    //输出图片    header("content-type:image/png");    imagepng($img);    //清除资源    imagedestroy($img);   }   //获取随机的验证内容:A-Z,a-z,1-9   private function captchaString() {    //获取四个随机的字符串    $str = "";    for ($i = 0; $i < $this->length; $i++) {     switch (mt_rand(1, 3)) {      case 1 :       $str .= chr(mt_rand(49, 57));       break;      case 2 :       $str .= chr(mt_rand(97, 122));       break;      case 3 :       $str .= chr(mt_rand(65, 90));       break;     }    }    return $str;   }   //判断验证码   public static function checkCaptcha($captcha) {    @ session_start();    return strtoupper($captcha) === strtoupper($_SESSION['captcha']);   }  }  //使用方法:  $img = new captcha();//这里采用默认参数  $img->captcha();  ?>

运行结果:

PHP封装的验证码工具类定义与用法示例

注:代码中用到的字体为cambriab.ttf完整实例代码下载:http://yy.jb51.net:81/201808/yuanma/cambriab.ttf(jb51.net).rar

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论