php如何实现验证码.docx
文本预览下载声明
php如何实现验证码
验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码。
验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码。好吧,其实是没有事情干,但是又不想浪费时间,所 以学习了下php实现验证码。正所谓,技多不压身。而且,也可以封装成一个函数,以后使用的时候也是很方便的,当然现在未封装。
现在来说说简单的纯数字验证码吧。
如果是初学者,建议按照我代码的注释?//数字 ?一步步来。最简单的方法,还是把整个代码复制走了。
新建一个captcha.php:
php?
????//10设置session,必须处于脚本最顶部?
????session_start();?
?
????$image?=?imagecreatetruecolor(100,?30);????????//1设置验证码图片大小的函数?
????//5设置验证码颜色?imagecolorallocate(int?im,?int?red,?int?green,?int?blue);?
????$bgcolor?=?imagecolorallocate($image,255,255,255);?//#ffffff?
????//6区域填充?int?imagefill(int?im,?int?x,?int?y,?int?col)??(x,y)?所在的区域着色,col?表示欲涂上的颜色?
????imagefill($image,?0,?0,?$bgcolor);?
????//10设置变量?
????$captcha_code?=?;?
????//7生成随机数字?
????for($i=0;$i4;$i++){?
????????//设置字体大小?
????????$fontsize?=?6;?????????
????????//设置字体颜色,随机颜色?
????????$fontcolor?=?imagecolorallocate($image,?rand(0,120),rand(0,120),?rand(0,120));????????????//0-120深颜色?
????????//设置数字?
????????$fontcontent?=?rand(0,9);?
????????//10.=连续定义变量?
????????$captcha_code?.=?$fontcontent;?????
????????//设置坐标?
????????$x?=?($i*100/4)+rand(5,10);?
????????$y?=?rand(5,10);?
?
????????imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);?
????}?
????//10存到session?
????$_SESSION[authcode]?=?$captcha_code;?
????//8增加干扰元素,设置雪花点?
????for($i=0;$i200;$i++){?
????????//设置点的颜色,50-200颜色比数字浅,不干扰阅读?
????????$pointcolor?=?imagecolorallocate($image,rand(50,200),?rand(50,200),?rand(50,200));?????????
????????//imagesetpixel?—?画一个单一像素?
????????imagesetpixel($image,?rand(1,99),?rand(1,29),?$pointcolor);?
????}?
????//9增加干扰元素,设置横线?
????for($i=0;$i4;$i++){?
????????//设置线的颜色?
????????$linecolor?=?imagecolorallocate($image,rand(80,220),?rand(80,220),rand(80,220));?
????????//设置线,两点一线?
????????imageline($image,rand(1,99),?rand(1,29),rand(1,99),?rand(1,29),$linecolor);?
????}?
?
????//2设置头部,image/png?
????header(Content-Type:?image/png);?
????//3imagepng()?建立png图形函数?
????imagepng($image);?
????//4imagedestroy()?结束图形函数??销毁$image?
????imagedestro
显示全部