PHP经典的验证码类方式
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章给大家介绍PHP经典的验证码类方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我们通过PHP的GD库图像处理内容,设计一个验证码类Vcode。将该类声明在文件vcode
千家信息网最后更新 2025年01月18日PHP经典的验证码类方式
这篇文章给大家介绍PHP经典的验证码类方式,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
我们通过PHP的GD库图像处理内容,设计一个验证码类Vcode。将该类声明在文件vcode.class.php中,并通过面向对象的特性将一些实现的细节封装在该类中。只要在创建对象时,为构造方法提供三个参数,包括创建验证码图片的宽度、高度及验证码字母个数,就可以成功创建一个验证码类的对象。该类的声明代码如下所示:
width = $width; $this->height = $height; $this->num = $num; $this->code = $this->createcode(); //调用自己的方法 } //获取字符的验证码, 用于保存在服务器中 function getcode() { return $this->code; } //输出图像 function outimg() { //创建背景 (颜色, 大小, 边框) $this->createback(); //画字 (大小, 字体颜色) $this->outstring(); //干扰元素(点, 线条) $this->setdisturbcolor(); //输出图像 $this->printimg(); } //创建背景 private function createback() { //创建资源 $this->img = imagecreatetruecolor($this->width, $this->height); //设置随机的背景颜色 $bgcolor = imagecolorallocate($this->img, rand(225, 255), rand(225, 255), rand(225, 255)); //设置背景填充 imagefill($this->img, 0, 0, $bgcolor); //画边框 $bordercolor = imagecolorallocate($this->img, 0, 0, 0); imagerectangle($this->img, 0, 0, $this->width-1, $this->height-1, $bordercolor); } //画字 private function outstring() { for($i=0; $i<$this->num; $i++) { $color= imagecolorallocate($this->img, rand(0, 128), rand(0, 128), rand(0, 128)); $fontsize=rand(3,5); //字体大小 $x = 3+($this->width/$this->num)*$i; //水平位置 $y = rand(0, imagefontheight($fontsize)-3); //画出每个字符 imagechar($this->img, $fontsize, $x, $y, $this->code{$i}, $color); } } //设置干扰元素 private function setdisturbcolor() { //加上点数 for($i=0; $i<100; $i++) { $color= imagecolorallocate($this->img, rand(0, 255), rand(0, 255), rand(0, 255)); imagesetpixel($this->img, rand(1, $this->width-2), rand(1, $this->height-2), $color); } //加线条 for($i=0; $i<10; $i++) { $color= imagecolorallocate($this->img, rand(0, 255), rand(0, 128), rand(0, 255)); imagearc($this->img,rand(-10, $this->width+10), rand(-10, $this->height+10), rand(30, 300), rand(30, 300), 55,44, $color); } } //输出图像 private function printimg() { if (imagetypes() & IMG_GIF) { header("Content-type: image/gif"); imagegif($this->img); } elseif (function_exists("imagejpeg")) { header("Content-type: image/jpeg"); imagegif($this->img); } elseif (imagetypes() & IMG_PNG) { header("Content-type: image/png"); imagegif($this->img); } else { die("No image support in this PHP server"); } } //生成验证码字符串 private function createcode() { $codes = "3456789abcdefghijkmnpqrstuvwxyABCDEFGHIJKLMNPQRSTUVWXY"; $code = ""; for($i=0; $i < $this->num; $i++) { $code .=$codes{rand(0, strlen($codes)-1)}; } return $code; } //用于自动销毁图像资源 function __destruct() { imagedestroy($this->img); } }
在上面的脚本中,虽然声明验证码类Vcode的代码比较多,但细节都被封装在类中,只要直接输出对象,就可以向客户端浏览器中输出幅图片,并可以在浏览器表单中使用。另外本类自动获取验证码图片中的字符串,促成在服务的$_SESSION["code"]中。在提交表单时,只有用户在表单中输入验证码图片上显示的文字,并和服务器中保留的验证码字符串完全相同时,表单才可以提交成功。(注意:验证码在服务器端在$_SESSION["code"]中,所以必须开启session会话才能使用该类,)
在下面的脚本code.php中,使用session_start()开启用户会话控制,然后包含验证码类Vcode所在文件vcode.class.php,创建该类对象并直接输出。就可以将随机生成的验证码图片发送出去,同时会自动将这个验证码字符串保存在服务器中一份。代码如下所示:
getcode(); //将验证码图片输出 $vcode->outimg();?>
表单代码如下所示:
"; }else{ echo "输入不对!
"; }}?>
PHP经典验证码类下载:
PHP验证码类.rar
关于PHP经典的验证码类方式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
验证
输出
图片
字符
图像
对象
表单
服务
代码
字符串
服务器
背景
经典
成功
内容
大小
颜色
输入
方式
元素
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
宝山区参考数据库服务价格查询
认证服务器不通是什么原因
计算机网络技术的背景
软件开发过程模型xp
网络技术有限公司仓管
中国台湾开源软件开发设计
数据库在医疗领域的应用论文
企业网络安全科技馆电影
香港服务器和韩国
软件开发推荐
昭通卷烟厂网络安全招标
网络技术人员是什么意思
盟否网络技术
乌班图服务器版怎么分区
多个程序读写access数据库
河北网络技术分类设计
计算机网络技术职业评估图
桌面云一体机服务器
网络安全技术大专
网络安全进校园字体图片
网络安全法手抄报图片
服务器开机亮蓝色id灯
r语言导出第几位的数据库
梦幻手游不同服务器能捉鬼吗
ibm工业服务器工资
工商银行软件开发中心是总行
兰州牛大网络安全
计算机网络技术基础实验七
数据库题库与试题的关系
服务器到路由器网通