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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
用穿越火线快速入门php面向对象
Feb 22 PHP
基于PHP生成静态页的实现方法
May 10 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php生成静态页面的简单示例
Apr 17 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
php ajax数据传输和响应方法
Aug 21 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 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队列用法实例
2014/11/05 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
js module大战
2019/04/19 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
js实现动态时钟
2020/03/12 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
实例说明Python中比较运算符的使用
2015/05/13 Python
Python常用小技巧总结
2015/06/01 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
21行Python代码实现拼写检查器
2016/01/25 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
Django中的文件的上传的几种方式
2018/07/23 Python
python的re模块使用方法详解
2019/07/26 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
大学自我鉴定
2013/12/20 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
java基础——多线程
2021/07/03 Java/Android
Python实现为PDF去除水印的示例代码
2022/04/03 Python