PHP验证码实现代码(3种)
验证码形式越来越多,但用js编写的验证码总是不方便,所以我们学习了PHP实现的验证码。事实上,没有什么要做的,但它不想浪费时间,所以我学会了实现PHP验证代码,这就是所谓的,该技术不压迫身体,而且它也可以封装成一个函数,在以后使用时也很方便,当然它也没有打包。
现在我们来讨论一个简单的纯数字验证代码。
如果是初学者,我建议按照代码注释一步一步地进行,最简单的方法就是复制整个代码。
创建一个新的captcha.php:
< PHP
10设置会话,必须位于脚本的顶部。
session_start();
$图像=新建一个真彩色图像(100, 30); / / 1 >设置的验证码图片大小功能
/ / 5 >设置验证码的颜色imagecolorallocate(int IM,int int int红,绿色,蓝色);
背景颜色= imagecolorallocate美元(美元形象,255255255); / / # ffffff
/ / 6 >区域填充的区域(int int imagefill IM,x,y,int Col)(X,int Col)所在的地方的颜色是画。
imagefill($ 0, 0美元的图像,背景颜色);
10设置变量
= $ captcha_code ;
7随机数的生成
($ i = 0;$ i < 4;$ + +){
设置字体大小
字体大小= 6美元;
设置字体颜色、随机颜色
字体颜色= imagecolorallocate美元(美元形象,兰德(0120)、(0120)、兰特兰特(0120)); / / 0-120深颜色
设置号
fontcontent美元=兰特(0.9);
10 =变量的连续定义
captcha_code = fontcontent美元美元;
设置坐标
X =($我* 100 / 4)+兰德(5,10);
Y元=兰特(5,10);
imagestring(美元美元美元图像,字体,X、Y元,fontcontent美元美元,字体颜色);
}
10 >保存到会话
_session美元{ 'authcode} = $ captcha_code;
8添加干扰元素和设置雪花。
($ i = 0;$ i < 200;$ + +){
/ /设定点颜色,50-200彩色数字光,不干扰阅读
pointcolor美元= imagecolorallocate(合形象,伦德(50200),伦德(50200),伦德(50200));
/ / imagesetpixel -绘制单个像素
imagesetpixel(合形象,伦德(1,99)、伦德(29),pointcolor美元);
}
9添加干扰元素并设置横线。
($ i = 0;$ i < 4;$ + +){
设置颜色
颜色= imagecolorallocate美元(美元的形象,伦德(80220),伦德(80220),伦德(80220));
设置行,两行
imageline(合形象,伦德(1,99)、伦德(29)、伦德(1,99)、伦德(29美元),颜色);
}
2
头('content-type:图像/格式);
/ / 3 > imagepng()设置PNG图形功能
imagepng($图像);
/ / 4 >销毁一图像()端摧毁美元图像图形功能
销毁一图像($图像);
然后对静态页面的代码是:index.html
验证码
验证码:style=宽度:100px;身高:30px />
换一个
请输入验证码:
正如你可以看到从index.html,提交表单是form.php,所以有form.php码的判断:
< PHP
标题(内容类型:文本/ HTML;字符集= UTF-8); / /设置头信息
/ /是否isset()检测变量设置
如果(isset($ _request { 'authcode ' })){
session_start();
/ / strtolower小写()函数
如果(strtolower($ _request { 'authcode ' })= = $ _session { 'authcode ' }){
跳转页面
;
文档;
;
其他{ }
提示和页面跳转
;
回声警报(输入错误!);
文档;
;
}
出口();
}
显示页面如下所示:
那么,实现纯数字、数字和英语应该不难,不要再废话了,拉代码吧。
< PHP
10设置会话,必须位于脚本的顶部。
session_start();
$图像=新建一个真彩色图像(100, 30); / / 1 >设置的验证码图片大小功能
/ / 5 >设置验证码的颜色imagecolorallocate(int IM,int int int红,绿色,蓝色);
背景颜色= imagecolorallocate美元(美元形象,255255255); / / # ffffff
/ / 6 >区域填充的区域(int int imagefill IM,x,y,int Col)(X,int Col)所在的地方的颜色是画。
imagefill($ 0, 0美元的图像,背景颜色);
10设置变量
= $ captcha_code ;
7生成随机字母和数字。
($ i = 0;$ i < 4;$ + +){
设置字体大小
字体大小= 8美元;
设置字体颜色、随机颜色
字体颜色= imagecolorallocate美元(美元形象,兰德(0120)、(0120)、兰特兰特(0120)); / / 0-120深颜色
设置值随机值,删除易出错的值,如0和o
$data = 'abcdefghigkmnpqrstuvwxy3456789;
删除 / /价值strlen截取字符串的方法得到的字符串的长度
fontcontent美元= substr($数据,兰特(0,strlen($数据)),1);
10 =变量的连续定义
captcha_code = fontcontent美元美元;
设置坐标
X =($我* 100 / 4)+兰德(5,10);
Y元=兰特(5,10);
imagestring(美元美元美元图像,字体,X、Y元,fontcontent美元美元,字体颜色);
}
10 >保存到会话
_session美元{ 'authcode} = $ captcha_code;
8添加干扰元素和设置雪花。
($ i = 0;$ i < 200;$ + +){
/ /设定点颜色,50-200彩色数字光,不干扰阅读
pointcolor美元= imagecolorallocate(合形象,伦德(50200),伦德(50200),伦德(50200));
/ / imagesetpixel -绘制单个像素
imagesetpixel(合形象,伦德(1,99)、伦德(29),pointcolor美元);
}
9添加干扰元素并设置横线。
($ i = 0;$ i < 4;$ + +){
设置颜色
颜色= imagecolorallocate美元(美元的形象,伦德(80220),伦德(80220),伦德(80220));
设置行,两行
imageline(合形象,伦德(1,99)、伦德(29)、伦德(1,99)、伦德(29美元),颜色);
}
2
头('content-type:图像/格式);
/ / 3 > imagepng()设置PNG图形功能
imagepng($图像);
/ / 4 >销毁一图像()端摧毁美元图像图形功能
销毁一图像($图像);
其他两页不允许修改。
总的来说,现在已经足够了,但是像动漫一样,总是有很多东西。
好吧,让我们来一个汉字。实际上,我将把汉字的验证码放在毕业设计中。虽然幻灯片验证码现在很流行,但我毕竟不是在学习js。
< PHP
11设置会话,必须位于脚本的顶部。
session_start();
1设置验证代码图片大小的函数
$图像=新建一个真彩色图像(200, 60);
/ / 5 >设置验证码的颜色imagecolorallocate(int IM,int int int红,绿色,蓝色);
背景颜色= imagecolorallocate美元(美元形象,255255255); / / # ffffff
/ / 6 >区域填充的区域(int int imagefill IM,x,y,int Col)(X,int Col)所在的地方的颜色是画。
imagefill($ 0, 0美元的图像,背景颜色);
/ / 7 >套TTF字体
$ fontface = 'fzytk TTF;
7设置字体库以实现简单的数字存储。
$str =天地天堂圣人不仁,以百姓为刍狗,经常出现在控诉残忍的暴君暴政的一切在那些所谓圣人的谦卑上看看有没有两个不是我们的人如狗。但它不是很好的诠释情感的东西,万物一样圣人不感情用事的东西,大家都牵着你的手,当男女主人公说的时候,充满了无声的温柔,彼此牵手,而儿子的含泪羞涩回恨。这样的情节,我们是不是见过很多,但我们看到这句话的原句,生死契阔,手不住我叹气迅席席席宽我不相信战机间均同意,我们会在一起。现在我怎么和我已经同意与人们的生活我怎么能活下去赤裸裸的兄弟情谊,战友间的友谊,冀友的美好感觉,比男人与女人之间的爱情更为合适。
/ / str_split()把字符串是一个数组,而中国是3个字符的utf_8
strdb美元= str_split($str,3);
11
captcha_code美元=;
8生成随机的人
($ i = 0;$ i < 4;$ + +){
设置字体颜色、随机颜色
字体颜色= imagecolorallocate美元(美元形象,兰德(0120)、(0120)、兰特兰特(0120)); / / 0-120深颜色
随机选择中文/
(0美元=兰特伯爵($ strdb));
cn =美元美元美元strdb { };
中文记录将保存到会话字符串中。
captcha_code美元= $ CN;
/ *(资源imagettftext美元浮动图像,美元浮动美元大小,角度,int x美元美元,int,int),
字符串的字符串的文本的字体、大小、角度)的窗帘,,坐标,颜色,字体路径,文本字符串
mt_rand(随机数发生器)比(RAND),四倍的速度。
imagettftext(美元的形象,mt_rand(20),mt_rand(- 60,60),(40 * $我+ 20),mt_rand(30、35),字体颜色美元美元美元,fontface,CN);
}
11 >保存到会话
_session美元{ 'authcode} = $ captcha_code;
9添加干扰元素、设置点
($ i = 0;$ i < 200;$ + +){
/ /设定点颜色,50-200彩色数字光,不干扰阅读
pointcolor美元= imagecolorallocate(合形象,伦德(50200),伦德(50200),伦德(50200));
/ / imagesetpixel -绘制单个像素
imagesetpixel(合形象,兰德(1199)、伦德(1,59),pointcolor美元);
}
10添加干扰元素,设置行
($ i = 0;$ i < 4;$ + +){
设置颜色
颜色= imagecolorallocate美元(美元的形象,伦德(80220),伦德(80220),伦德(80220));
/ /套线,两线
imageline(合形象,兰德(1199)、伦德(1,59),兰德(1199)、伦德(1,59美元),颜色);
}
2
头('content-type:图像/格式);
/ / 3 > imagepng()设置PNG图形功能
imagepng($图像);
/ / 4 >销毁一图像()端摧毁美元图像图形功能
销毁一图像($图像);
其他页面不需要修改。
结果如下:
这是PHP实现的三个验证码:纯数字验证码、数字加英文验证码和汉字验证码,有助于您掌握PHP验证码。