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

所属分类: 网络编程 / PHP编程 阅读数: 771
收藏 0 赞 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(); 
        } 
        //获取验证码 
        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();" />

更多精彩内容其他人还在看

利用Fix Rss Feeds插件修复WordPress的Feed显示错误

这篇文章主要介绍了利用Fix Rss Feeds插件修复WordPress的Feed显示错误的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

WordPress中给文章添加自定义字段及后台编辑功能区域

这篇文章主要介绍了WordPress中给文章添加自定义字段及后台编辑区域的相关函数,分别简单讲了add_post_meta和add_meta_box 的用法,需要的朋友可以参考下
收藏 0 赞 0 分享

学习php设计模式 php实现模板方法模式

这篇文章主要介绍了php设计模式中的模板方法模式,使用php实现模板方法模式,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版

这篇文章主要介绍了UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

详解PHP的Yii框架中日志的相关配置及使用

这篇文章主要介绍了PHP的Yii框架中日志的相关配置及使用,包括bug追踪以及数据库查询耗时记录等,需要的朋友可以参考下
收藏 0 赞 0 分享

thinkPHP中create方法与令牌验证实例浅析

这篇文章主要介绍了thinkPHP中create方法与令牌验证,以一个简单实例形式分析了thinkPHP中create方法与令牌验证增加表单安全性的相关技巧,代码备有详尽注释说明,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux系统下使用XHProf和XHGui分析PHP运行性能

这篇文章主要介绍了Linux系统下使用XHProf和XHGui分析PHP运行性能的方法,该方案支持Apache与Nginx服务器及多种数据库环境,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP的Yii框架的常用日志操作总结

这篇文章主要介绍了PHP的Yii框架的常用日志操作总结,包括消息的过略和格式化等基本内容,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP判断手机是IOS还是Android

这篇文章主要介绍了PHP判断手机是IOS还是Android的三个示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

学习php设计模式 php实现观察者模式(Observer)

这篇文章主要介绍了php设计模式中的观察者模式,使用php实现观察者模式,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多