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之第八天
Oct 09 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
php引用返回与取消引用的详解
Jun 08 PHP
初识Laravel
Oct 30 PHP
php程序内部post数据的方法
Mar 31 PHP
CI框架数据库查询之join用法分析
May 18 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
详解javascript高级定时器
2015/12/31 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
小程序实现投票进度条
2019/11/20 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
JS实现小米轮播图
2020/09/21 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
python的id()函数介绍
2013/02/10 Python
pyv8学习python和javascript变量进行交互
2013/12/04 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Python  Django 母版和继承解析
2019/08/09 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
高中三年学习生活的自我评价
2013/10/10 职场文书
手术室护士自我鉴定
2013/10/14 职场文书
教师师德演讲稿
2014/05/06 职场文书
管理建议书范文
2014/05/13 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
刑事起诉书范文
2015/05/19 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
使用pytorch实现线性回归
2021/04/11 Python