www.adminn.cn
站长正能量分享网!

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

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

分享一个好用的php验证码类,包括调用示例。

说明:如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.

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

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

  1. <?php   
  2.     class VerificationCode{   
  3.         private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789";  //随机因子   
  4.         private $code;  //验证码   
  5.         private $codelen=4; //验证码长度   
  6.         private $width=110; //宽度   
  7.         private $height=30; //高度   
  8.         private $img;   //图像资源句柄   
  9.         private $font;  //制定字体   
  10.         private $fontSize=25;   //字体大小   
  11.         private $fontColor//字体颜色   
  12.         public function __construct(){   
  13.             $this->font="CALIBRIZ.TTF";   
  14.         }   
  15.         //生成验证码   
  16.         private function createCode(){   
  17.             $len=strlen($this->charset)-1;   
  18.             for ($i = 0; $i < $this->codelen; $i++) {   
  19.                 $this->code .= $this->charset[mt_rand(0,$len)];   
  20.             }   
  21.         }   
  22.         //生成背景   
  23.         private function createBg(){   
  24.             $this->img=imagecreatetruecolor($this->width,$this->height);   
  25.             $color = imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));   
  26.             imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);   
  27.         }   
  28.         //生成文字   
  29.         private function createFont(){   
  30.             $x=$this->width/$this->codelen;   
  31.             for ($i = 0; $i < $this->codelen; $i++) {   
  32.                 $this->fontColor=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));   
  33.                 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.jb51.net 
  34.                 //imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor);   
  35.             }   
  36.         }   
  37.         //生成线条、雪花   
  38.         private function createDisturb(){   
  39.             for ($i = 0; $i < 6; $i++) {   
  40.                 $color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));   
  41.                 imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$color);   
  42.             }   
  43.             for ($i = 0; $i < 100; $i++) {   
  44.                 $color=imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));   
  45.                 imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);   
  46.             }   
  47.         }   
  48.         //输出   
  49.         private function outPut(){   
  50.             header("Content-Type:image/png");   
  51.             imagepng($this->img);   
  52.             imagedestroy($this->img);   
  53.         }   
  54.         public function showCode(){   
  55.             $this->createBg();   
  56.             $this->createCode();   
  57.             $this->createDisturb();   
  58.             $this->createFont();   
  59.             $this->outPut();   
  60.         }  //phpfensi.com 
  61.         //获取验证码   
  62.         public function getCode(){   
  63.             return strtolower($this->code);   
  64.         }   
  65.     }   
  66. ?> 

code.php,代码如下:

  1. <?php   
  2.     session_start();   
  3.     require_once 'VerificationCode.class.php';   
  4.     $code=new VerificationCode();   
  5.     $_SESSION['code']=$code->getCode();   
  6.     $code->showCode();   
  7. ?>   
  8.  
  9. 验证码:<input type="text" name="code" /><img src="code.php" onclick="javascript:this.src='code.php?time='+Math.random();" /> 

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《一个好用的PHP验证码类实例分享》
文章链接:https://www.adminn.cn/news/8485.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

本站源码仅供本地环境下学习借鉴研究使用!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏