php验证码生成代码


Posted in PHP onNovember 11, 2015

验证码通常是用来安全保证我们网站注册或登录不被注入的,但为了更安全我们通常会生成一些混合验证码了,下面一起来看看例子.

在我们开发登录模块或者是论坛的灌水模块的时候,为了防止恶意提交,需要用到验证码,验证码就是用来区分人和机器的一种手段,当然这种手段不是万无一失,但总归会起到一些作用.

验证码的实现需要GD库的支持,没有开启GD库的童鞋需开启GD库,其实验证码的制作和使用非常的简单,仅仅只是需要4个步骤就可以搞定:创建验证码底图,显示验证码内容,增加干扰元素,输出验证码,下面我们来进行步骤拆分:

第一步:创建验证码底图

$image = imagecreatetruecolor(100, 30); // 创建一个宽为 100 高为 30 的底图 该底图的背景色 为黑色 是系统定义的 
$bgcolor = imagecolorallocate($image, 255, 255, 255);  // 为上面创建的底图分配 白色的背景颜色 
imagefill($image, 0, 0, $bgcolor); // 填充白色背景色

第二步:显示验证码内容

// 输出验证码内容 
for ($i=0; $i < 4; $i++) { 
  $fontsize = 6; 
  $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); 
  $data = 'qwertyuipkjhgfdsazxcvbnm23456789'; 
  $content = substr($data, rand(0, strlen($data)), 1); 
  $x = ($i*100/4) + rand(5,9);  
  $y = rand(5,10); 
  imagestring($image, $fontsize, $x, $y, $content, $fontcolor); //在图像上水平输出一行字符串 
}

第三步:增加干扰元素

// 增加干扰点元素 
for ($i=0; $i < 300; $i++) { 
  $pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200)); 
  imagesetpixel($image, rand(0,99), rand(0,29), $pointcolor); 
} //开源软件:phpfensi.com 
// 增加干扰线元素  线 和 点 的颜色一定要控制好 要比验证码数字的颜色浅 避免出现验证码数字看不见的现象 
for ($i=0; $i < 4; $i++) { 
  $linecolor = imagecolorallocate($image, rand(100,240), rand(100,240), rand(100,240)); 
  imageline($image, rand(0,99), rand(0,29), rand(0,99), rand(0,29), $linecolor); 
}

第四步:输出验证码

// 输出创建的图像  在输出图像之前 必须输出头信息 用来规定输出的图像类型 
header("Content-Type: image/png"); 
imagepng($image); 
// 销毁图像 
imagedestroy($image);

至此,一个简单的验证码就实现了,关于实现验证码的注意事项已经写在了注释里,使用验证码的时候,我们一般都需要用session来保存以便验证,在这里就不作详细介绍。

以上就是php验证码生成代码,在重要的代码里已经进行了注释,大家可以仔细研究注释内容,也很重要,希望大家能够有所收获吧

PHP 相关文章推荐
PHP中调用JAVA
Oct 09 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
php输入流php://input使用浅析
Sep 02 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
php实现按天数、星期、月份查询的搜索框
May 02 PHP
PHP书写格式详解(必看)
May 23 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 PHP
Laravel框架使用Redis的方法详解
May 30 PHP
PHP实现与java 通信的插件使用教程
Aug 11 PHP
分享10段PHP常用代码
Nov 11 #PHP
php+mysql实现无限级分类
Nov 11 #PHP
2款PHP无限级分类实例代码
Nov 11 #PHP
PHP中set error handler函数用法小结
Nov 11 #PHP
php实现Session存储到Redis
Nov 11 #PHP
PHP防止刷新重复提交页面的示例代码
Nov 11 #PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 #PHP
You might like
php数据库连接
2006/10/09 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
js 实现打印网页中定义的部分内容的代码
2010/04/01 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
JQuery 又谈ajax局部刷新
2017/11/27 jQuery
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
python与字符编码问题
2019/05/24 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
将python安装信息加入注册表的示例
2019/11/20 Python
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
如何填写个人简历自我评价
2013/12/10 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
运动会通讯稿100字
2014/01/31 职场文书
采购主管岗位职责
2014/02/01 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
运动会加油口号
2014/06/07 职场文书
画展邀请函
2015/01/31 职场文书