找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1418|回复: 0
打印 上一主题 下一主题

个人写的PHP验证码生成类分享

[复制链接]

2560

主题

2560

帖子

7622

积分

论坛元老

Rank: 8Rank: 8

积分
7622
跳转到指定楼层
楼主
发表于 2018-2-14 05:55:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            此验证码类直接拿去就可以用,也可以参考!
其中类成员codestr是生成的验证码字符串:
width = $num*20;
    $this->height = $height;
    $this->num = $num;
    $this->$;  
    $this->Type = $Type;
    $this->codestr = $this->codestr();
    $this->zuhe();
  }

  // 2. 定义随机获取字符串函数
  private function codestr(){
    switch($this->Type){
     
      case 1:   // 类型为1 获取1-9随机数
        $str = implode("",array_rand(range(0,9),$this->num));
        break;
      case 2:   // 类型为2 获取a-z随机小写字母
        $str = implode("",array_rand(array_flip(range(a,z)),$this->num));
        break;
      case 3:   // 类型为3 获取数字,小写字母,大写字母 混合
        for($i=0;$inum;$i++){
          $m = rand(0,2);
          switch($m){
            case 0:
              $o = rand(48,57);
              break;
            case 1:
              $o = rand(65,90);
              break;
            case 2:
              $o = rand(97,122);
              break;
          }
          $str .= sprintf("%c",$o);
        }
        break;     
    }

     
    return $str;  
  }


  // 3. 初始化画布图像资源
  private function Hb(){
    $this->hb = imagecreatetruecolor($this->width,$this->height);
  }

  // 4. 生成背景颜色
  private function Bg(){
    return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250));
  }

  // 5. 生成字体颜色
  private function Font(){
    return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));  
  }

  // 6. 填充背景颜色
  private function BgColor(){
    imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg());
  }

  // 7. 干扰点
  private function ganrao(){
    $sum=floor(($this->width)*($this->height)/3);
    for($i=0;$ihb,rand(0,$this->width),rand(0,$this->height),$this->Bg());  
    }
  }

  // 8. 随机直线 弧线
  private function huxian(){
    for($i=0;$inum;$i++){
      imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg());   
    }  
  }

  // 9. 写字
  private function xiezi(){
    for($i=0;$inum;$i++){
      $x=ceil($this->width/$this->num)*$i;
      $y=rand(1,$this->height-15);
      imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font());
    }  
  }

  // 10. 输出
  private function OutImg(){
    $shuchu="image".$this->;
    $header="Content-type:image/".$this->;
    if(function_exists($shuchu)){
      header($header);
      $shuchu($this->hb);
    }else{
      exit("GD库没有此类图像");
    }
  }

  // 11. 拼装
  private function zuhe(){
    $this->Hb();
    $this->BgColor();
    $this->ganrao();
    $this->huxian();
    $this->xiezi();
    $this->OutImg();
  }  

  public function getCodeStr(){
    return $this->codestr;   
  }
}
?>
            
            
您可能感兴趣的文章:
  • php中文字母数字验证码实现代码
  • asp.net下生成英文字符数字验证码的代码
  • 支持中文字母数字、自定义字体php验证码代码
  • asp.net生成验证码(纯数字)
  • javascript实现数字验证码的简单实例
  • jquery禁止输入数字以外的字符的示例(纯数字验证码)
  • c#实现识别图片上的验证码数字
  • php生成4位数字验证码的实现代码
  • 原生js实现数字字母混合验证码的简单实例
  • 写一个含数字,拼音,汉字的验证码生成类
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端