PHP从零单排(十九)生成带有底纹的数字验证码图片 分类: PHP 2014-05-06 12:48 124人阅读 评论(0) 收藏
2014-05-06 12:48
597 查看
简单的说,验证码就是网站为了防止用户利用网络“机器人”程序自动注册、登录、灌水发帖而采用的一种网络编程安全技术。
实质上,所谓的验证码,是通过网站编程实现的一项简单的功能,他就是将一串随机产生的数字或符号,生成一副图片,图片里加上一些干扰像素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。图形验证码干扰色越多,自动机器人程序越难把字码认出来。通常用的干扰色有:随机文字颜色、随机颜色底纹、随机文字位置、随机文字大小、随机背景花纹。
验证码的运行机制是在需要用户通过填写表单与服务器交互时,在随机产生验证码的同时生成一个session,然后通过表单递交数据与session中保存的验证码进行比较,正确即验证码通过,否则出错提示。
实质上,所谓的验证码,是通过网站编程实现的一项简单的功能,他就是将一串随机产生的数字或符号,生成一副图片,图片里加上一些干扰像素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。图形验证码干扰色越多,自动机器人程序越难把字码认出来。通常用的干扰色有:随机文字颜色、随机颜色底纹、随机文字位置、随机文字大小、随机背景花纹。
验证码的运行机制是在需要用户通过填写表单与服务器交互时,在随机产生验证码的同时生成一个session,然后通过表单递交数据与session中保存的验证码进行比较,正确即验证码通过,否则出错提示。
<?php $img_height=60; $img_width=20; for($tmpa=0;$tmpa<4;++$tmpa) { $nmsg[$tmpa]=dechex(rand(0,15));//生成随机数,并转成十六进制,作为验证码 dechex() 函数把十进制转换为十六进制。 }//所以$nmsg[]数组里存储了四个0-9 a-f的值 $aimg=imagecreate($img_height,$img_width);//生成图片 imagecolorallocate($aimg,255,255,255);//图片底色 $black=imagecolorallocate($aimg,0,0,0);//定义需要的黑色 //用黑色的矩形把图片包围 imagerectangle($aimg,0,0,$img_height-1,$img_width-1,$black); //下面的代码生成底纹,其实就是在图片上生成一些符号 for($i=0;$i<100;++$i) {//使用*符号作为底纹,为了使底纹看起来杂乱无章,五颜六色,需要一个个的生成,同时其位置、颜色、大小都用随机数 imagestring($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"*",imagecolorallocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255))); } //生成验证码,同样的道理,验证码一个个的输出到图片上,同时其位置、颜色、大小都用随机数 for($i=0;$i<count($nmsg);++$i) { imagestring($aimg,mt_rand(3,9),$i*$img_height/4+mt_rand(1,10),mt_rand(1,$img_width/4),$nmsg[$i],imagecolorallocate($aimg,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255))); } header("Content-type:image/png"); imagepng($aimg); imagedestroy($aimg); ?>
相关文章推荐
- PHP从零单排(十八)图片处理 分类: PHP 2014-05-06 10:44 377人阅读 评论(0) 收藏
- PHP从零单排(十九)生成带有底纹的数字验证码图片
- PHP从零单排(十)PHP中生成随机数 分类: PHP 2014-04-24 09:09 120人阅读 评论(0) 收藏
- PHP从零单排(九)在PHP中生成cookie 分类: PHP 2014-04-23 22:49 147人阅读 评论(0) 收藏
- PHP从零单排(三)PHP中的session 分类: PHP 2014-04-21 09:20 169人阅读 评论(0) 收藏
- PHP从零单排(十二)使用PHP连接MySQL数据库 分类: PHP 2014-04-29 11:01 130人阅读 评论(0) 收藏
- PHP从零单排(十一)操作MySQL的PHP函数 分类: PHP 2014-04-29 10:21 152人阅读 评论(0) 收藏
- PHP从零单排(十四)数据分页显示的原理及实现 分类: PHP 2014-05-01 22:05 325人阅读 评论(0) 收藏
- PHP从零单排(十五)牛刀小试--就业信息周报系统 分类: PHP 2014-05-02 20:28 155人阅读 评论(0) 收藏
- PHP从零单排(四)PHP中的文件上传处理 分类: PHP 2014-04-21 11:13 191人阅读 评论(0) 收藏
- PHP从零单排(五)PHP对数组的处理 分类: PHP 2014-04-22 09:35 151人阅读 评论(0) 收藏
- PHP从零单排(八)用PHP处理日期和时间 分类: PHP 2014-04-23 17:59 108人阅读 评论(0) 收藏
- PHP从零单排(十三)使用PHP显示MySQL数据库的数据 分类: PHP 2014-04-30 10:50 344人阅读 评论(0) 收藏
- PHP从零单排(十六)PHP操作MySQL常见错误信息及分析 分类: 技巧总结 2014-05-03 11:34 139人阅读 评论(0) 收藏
- 【canvas马赛克效果】根据加载的图片动态生成对应的马赛克图片 分类: javascript 马赛克效果 马赛克 2015-03-20 17:35 79人阅读 评论(0) 收藏
- PHP从零单排(十七)主要图像处理函数及图像基础示例 分类: PHP 2014-05-06 07:56 148人阅读 评论(0) 收藏
- php生成唯一识别码uuid 分类: php uuid guid 2014-02-08 11:59 888人阅读 评论(0) 收藏
- PHP从零单排(七)用PHP操作目录和文件 分类: PHP 2014-04-23 15:42 112人阅读 评论(0) 收藏
- PHP从零单排(六)PHP对字符串的处理 分类: PHP 2014-04-22 10:25 147人阅读 评论(0) 收藏
- PHP从零单排(零)技巧总结 分类: PHP 2014-04-21 09:12 151人阅读 评论(0) 收藏