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 相关文章推荐
ip签名探针
Oct 09 PHP
PHP base64+gzinflate压缩编码和解码代码
Oct 03 PHP
php 删除记录实现代码
Mar 12 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 PHP
php中使用base HTTP验证的方法
Apr 20 PHP
PHP中Session和Cookie是如何操作的
Oct 10 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
PHP连接MySQL数据库三种实现方法
Dec 10 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和ACCESS写聊天室(六)
2006/10/09 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
smarty表格换行实例
2014/12/15 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
webpack多页面开发实践
2017/12/18 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
简历中的自我评价范文
2014/02/05 职场文书
幼儿教师工作感言
2014/02/14 职场文书
总经理的岗位职责
2014/02/23 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python
各国货币符号大全
2022/02/17 杂记