• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

分享一个好用的PHP验证码类实例

php 搞代码 4年前 (2022-01-22) 43次浏览 已收录 0个评论

分享一个好用的php验证码类,包括调用示例。
说明:
如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.

参考了网上的php 生成验证码的方法,以及php 图片验证码和php 中文验证码的生成方法。用到了PHP GD库的相关知识。

1,生成验证码的类 VerificationCode.class.php
代码如下:

<?php      class VerificationCode{          private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789";  //随机因子          private $code;  //验证码          private $codelen=4; //验证码长度          private $width=110; //宽度          private $height=30; //高度          private $img;   //图像资源句柄          private $font;  //制定字体          private $fontSize=25;   //字体大小          private $fontColor; //字体颜色          public function __construc<a style="color:transparent">、本文来源gao($daima.com搞@代@#码$网</a><big>搞gaodaima代码</big>t(){              $this->font="CALIBRIZ.TTF";          }          //生成验证码          private function createCode(){              $len=strlen($this->charset)-1;              for ($i = 0; $i < $this->codelen; $i++) {                  $this->code .= $this->charset[mt_rand(0,$len)];              }          }          //生成背景          private function createBg(){              $this->img=imagecreatetruecolor($this->width,$this->height);              $color = imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));              imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);          }          //生成文字          private function createFont(){              $x=$this->width/$this->codelen;              for ($i = 0; $i < $this->codelen; $i++) {                  $this->fontColor=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));                  imagettftext($this->img,$this->fontSize,mt_rand(-30,30),$i*$x+mt_rand(1,5),$this->height/1.4,$this->fontColor,$this->font,$this->code[$i]);  // www.jbxue.com                //imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor);              }          }          //生成线条、雪花          private function createDisturb(){              for ($i = 0; $i < 6; $i++) {                  $color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));                  imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$color);              }              for ($i = 0; $i < 100; $i++) {                  $color=imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));                  imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);              }          }          //输出          private function outPut(){              header("Content-Type:image/png");              imagepng($this->img);              imagedestroy($this->img);          }          public function showCode(){              $this->createBg();              $this->createCode();              $this->createDisturb();              $this->createFont();              $this->outPut();          }          //获取验证码          public function getCode(){              return strtolower($this->code);          }      }  ?>

code.php

代码如下:

<?php      session_start();      require_once 'VerificationCode.class.php';      $code=new VerificationCode();      $_SESSION['code']=$code->getCode();      $code->showCode();  ?>

验证码:

<input type="text" name="code" /><img src="code.php" onclick="javascript:this.src='code.php?time='+Math.random();" />

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:分享一个好用的PHP验证码类实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址