当前位置:首页 > PHP教程 > php类库 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-26 10:08:56 浏览: 评论:0 

这篇文章主要介绍了PHP封装的验证码工具类定义与用法,结合完整实例形式详细分析了php封装的验证码工具类相关图片创建、随机字符串、验证码验证等功能定义与使用技巧,需要的朋友可以参考下。

本文实例讲述了PHP封装的验证码工具类定义与用法,分享给大家供大家参考,具体如下:

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

  1. //验证码宽度 
  2. private $width
  3. //验证码高度 
  4. private $height
  5. //验证的个数 
  6. private $length
  7. //干扰点个数 
  8. private $dots
  9. //干扰点的类型 
  10. private $type
  11. //干扰线个数 
  12. private $lines
  13. //文字 
  14. private $font

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

  1. <?php 
  2. //创建验证码工具类 
  3. class captcha { 
  4.  //验证码的各种参数 
  5.  //验证码宽度 
  6.  private $width
  7.  //验证码高度 
  8.  private $height
  9.  //验证的个数 
  10.  private $length
  11.  //干扰点个数 
  12.  private $dots
  13.  //干扰点的类型 
  14.  private $type
  15.  //干扰线个数 
  16.  private $lines
  17.  //文字 
  18.  private $font
  19.  //验证码属性的构造方法 
  20.  public function __construct($arr = array ()) { 
  21.   //将属性赋值 
  22.   $this->width = isset ($arr['width']) ? trim($arr['width']) : '270'
  23.   $this->height = isset ($arr['height']) ? trim($arr['height']) : '30'
  24.   $this->length = isset ($arr['length']) ? trim($arr['length']) : '4'
  25.   $this->dots = isset ($arr['dots']) ? trim($arr['dots']) : '81'
  26.   $this->type = isset ($arr['type']) ? trim($arr['type']) : '*'
  27.   $this->lines = isset ($arr['lines']) ? trim($arr['lines']) : '5'
  28.   $this->font = isset ($arr['font']) ? trim($arr['font']) : './cambriab.ttf'
  29.  } 
  30.  //创建验证码的方法 
  31.  public function captcha() { 
  32.   //创建画布 
  33.   $img = imagecreatetruecolor($this->width, $this->height); 
  34.   //填充颜色 
  35.   //颜色资源 
  36.   $color = imagecolorallocate($img, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255)); 
  37.   //填充背景 
  38.   imagefill($img, 0, 0, $color); 
  39.   //添加干扰点 
  40.   for ($i = 0; $i < $this->dots; $i++) { 
  41.    //颜色资源 
  42.    $dots_color = imagecolorallocate($img, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200)); 
  43.    //插入干扰点 
  44.    imagestring($img, mt_rand(1, 5), mt_rand(0, $this->width), mt_rand(0, $this->height), $this->type, $dots_color); 
  45.   } 
  46.   //添加干扰线 
  47.   for ($i = 0; $i < $this->lines; $i++) { 
  48.    //颜色资源 
  49.    $line_color = imagecolorallocate($img, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200)); 
  50.    //插入干扰线 
  51.    imageline($img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $line_color); 
  52.   } 
  53.   //首先获取验证码,然后插入验证文字 
  54.   //文字高度 
  55.   $size = mt_rand(18, 20); 
  56.   //获取验证码 
  57.   $str = $this->captchastring(); 
  58.   for ($i = 0; $i < strlen($str); $i++) { 
  59.    //颜色资源 
  60.    $str_color = imagecolorallocate($img, mt_rand(50, 150), mt_rand(50, 150), mt_rand(50, 150)); 
  61.    //插入验证码 
  62.    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]); 
  63.   } 
  64.   //将得到的验证码存入SESSION中,便于以后的验证码判断 
  65.   @ session_start(); 
  66.   $_SESSION['captcha'] = $str
  67.   //输出图片 
  68.   header("content-type:image/png"); 
  69.   imagepng($img); 
  70.   //清除资源 
  71.   imagedestroy($img); 
  72.  } 
  73.  //获取随机的验证内容:A-Z,a-z,1-9 
  74.  private function captchaString() { 
  75.   //获取四个随机的字符串 
  76.   $str = ""
  77.   for ($i = 0; $i < $this->length; $i++) { 
  78.    switch (mt_rand(1, 3)) { 
  79.     case 1 : 
  80.      $str .= chr(mt_rand(49, 57)); 
  81.      break
  82.     case 2 : 
  83.      $str .= chr(mt_rand(97, 122)); 
  84.      break
  85.     case 3 : 
  86.      $str .= chr(mt_rand(65, 90)); 
  87.      break
  88.    } 
  89.   } 
  90.   return $str
  91.  } 
  92.  //判断验证码 
  93.  public static function checkCaptcha($captcha) { 
  94.   @ session_start(); 
  95.   return strtoupper($captcha) === strtoupper($_SESSION['captcha']); 
  96.  } 
  97. //使用方法: 
  98. $img = new captcha();//这里采用默认参数 
  99. $img->captcha(); 
  100. ?>

Tags: PHP封装验证码 PHP工具类定义

分享到: