源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-02-25 11:00 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:一个好用的PHP验证码类实例分享
分享一个好用的php验证码类,包括调用示例。 说明: 如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts. 参考了网上的php 生成验证码的方法,以及php 图片验证码和php 中文验证码的生成方法。用到了PHP GD库的相关知识。 1,生成验证码的类 VerificationCode.class.php
[u]复制代码[/u] 代码如下:
<?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 __construct(){              $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.1sucai.cn                 //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
[u]复制代码[/u] 代码如下:
<?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();" />
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部