我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

一种PHP中生成验证码的方法 摘要:验证码已经是现在网站很基础的知识点了,验证码的存在可以防止恶意的密码破解,刷票,水军,可以有效的防止暴力破解。本文简单介绍一种PHP中生成验证码的方法。 关键词:PHP验证码。 目前大部分网站还是采用静态图片验证码,因为这样实现起来简单方便,不需要扎实的基础,当然这也是基础,其原理就是利用PHP的绘图功能,将文字绘制成图片返回到页面。所以我们解决的问题只有三步: 随机生成验证码内容 将验证码转换成图片,也就是绘制图片,将绘制的图片返回到页面 因为PHP默认是没有开启绘图功能的,所以在php.ini配置文件中开启绘图功能: 搜索;=.dll 去掉前面的分号,开启绘图功能。 把所有的字母和数字列出一个字符串,然后通过随机下标随机获取对应的值: $ = ; $str = 90; for ($i = 0; $i lt; 4; $i ++) { $ .= $str[rand(0, ($str))]; } echo $; 上面的验证码就生成了,接下来就是用PHP来绘制验证码了: // 创建一张宽为110px,高为25px的图片 $img = (110, 25); // 设置图片背景色为黑色,颜色值对应RGB $ = ($img, 0, 0, 0); // 创建白色 $white = ($img, 255, 255, 255); // 为图片添加文字。 第二个参数为文字的大小,只能在1~5之间,第三个参数为x坐标,第四个参数为y坐标,第五个参数为文字的内容,第六个参数为文字的颜色 ($img, rand(3, 5), rand(0, 80), rand(2, 10), $, $white); 1 //将文字添加到图片中,第二个参数为文字的大小,只能在1~5之间,第三个参数为x坐标,第四个参数为y坐标,第五个参数为文字的内容,第六个参数为文字的颜色 ($img, rand(3, 5), rand(0, 80), rand(2, 10), $, $white); 当然这种情况下验证码太容易被识别了,只是简单的黑背景配白色文字。 为了增加难度,我们再增加几条线叠加在验证码上: // 创建一张宽为110px,高为25px的图片 $img = (110, 25); // 设置图片背景色为黑色,颜色值对应RGB $ = ($img, 0, 0, 0); // ($img, 10, 10, $); // 创建白色 $white = ($img, 255, 255, 255); for ($i = 0; $i lt; 30; $i++) { // 在图片上画一条线,其中第二个参数表示线条的x起始坐标,第三个参数表示线条的y起始坐标,第四个参数表示x结束坐标,第五个参数表示y结束坐标,第六个参数表示颜色。 这里生成了一个随机的颜色 ($img, rand(0, 110), rand(0, 50), rand(0, 110), rand(0, 50), ($img, rand(0, 255), rand(0, 255), rand(0, 255))); } // 给图片添加文字,第二个参数为文字的大小,只能在1~5之间,第三个参数为x坐标,第四个参数为y坐标,第五个参数为文字内容,第六个参数为文字的颜色 ($img, rand(3, 5), rand(0, 80), rand(2, 10), $, $white); // 返回图片(-type: image/png); ($img); 要实现验证码,这样还不行,还需要将验证码生成的随机数存放在服务端,$[] = $;,然后和客户端输入的验证码进行比较。

PHP中的验证码就实现了,当然这是最基本的代码,你可以根据自己的想法,把它改成算术验证码,中文验证码,或者其他一些有趣的验证码,以减少它的枯燥感,同时达到安全性。 参考文献: [1] [2] 陈超.《PHP从入门到精通》.化学工业出版社. 2009-8-14

二维码
扫一扫在手机端查看

本文链接:https://by928.com/2737.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线