一个好用的PHP验证码类实例分享
发布:smiling 来源: PHP粉丝网 添加日期:2020-08-17 16:29:21 浏览: 评论: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 __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.jb51.net
- //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();
- } //phpfensi.com
- //获取验证码
- 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();" />
Tags: PHP验证码
- 上一篇:php截取中文字符串不乱码的方法
- 下一篇:浅谈PHP变量作用域以及地址引用问题
相关文章
- ·php网页生成验证码实现程序(2014-07-30)
- ·简单实例php验证码代码(2014-08-17)
- ·PHP验证码生成与验证例子(2014-08-22)
- ·PHP验证码生成程序几种方法(2014-08-22)
- ·PHP验证码实现代码简单示例(2014-08-22)
- ·php验证码程序代码(2014-08-22)
- ·PHP验证码之Ajax验证实现方法(2014-08-22)
- ·php中文汉字验证码程序(2014-08-23)
- ·一个完整php验证码实例程序(2014-08-25)
- ·php 用户登录验证码的实现方法(2014-09-11)
- ·php jquery 验证码代码(2014-09-20)
- ·php验证码生成器(2018-08-06)
- ·PHP+javascript制作带提示的验证码源码分享(2021-01-15)
- ·php程序总是提示验证码输入有误解决方案(2021-05-07)
- ·php验证码生成代码(2021-06-26)
- ·php验证码的制作思路和实现方法(2021-06-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)