PHP通过GD库实现验证码功能示例


Posted in PHP onFebruary 23, 2019

本文实例讲述了PHP通过GD库实现验证码功能。分享给大家供大家参考,具体如下:

首先看看实现的效果:

PHP通过GD库实现验证码功能示例

具体实现:

<?php
/*PHP实现验证码*/
session_start();//开启会话
//创建画布
$image=imagecreatetruecolor(100,38);
//背景颜色
$bgcolor=imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$bgcolor);
$captch_code='';//存储验证码
//随机选取4个数字
for($i=0;$i<4;$i++){
  $fontsize=10;    //
  $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));//随机颜色
  $fontcontent=rand(0,9);
  $captch_code.=$fontcontent;
  $x=($i*100/4)+rand(5,10);  //随机坐标
  $y=rand(5,10);
  imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
/*//字母和数字混合验证码
for($i=0;$i<4;$i++) {
  $fontsize = 10;    //
  $fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));//??????
  $data = 'abcdefghijklmnopqrstuvwxyz1234567890';  //数据字典
  $fontcontent = substr($data, rand(0, strlen($data)), 1);
  $captch_code.=$fontcontent;
  $x = ($i * 100 / 4) + rand(5, 10);
  $y = rand(5, 10);
  imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}*/
$_SESSION['code']=$captch_code;
//增加干扰点
for($i=0;$i<200;$i++){
  $pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));
  imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);//
}
//增加干扰线
for($i=0;$i<3;$i++){
  $linecolor=imagecolorallocate($image,rand(80,280),rand(80,220),rand(80,220));
  imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);
}
//输出格式
header('content-type:image.png');
imagepng($image);
//销毁图片
imagedestroy($image);

实现表单的连接和“换一个”功能的实现:

<input type="text" placeholder="验证码" name="verifycode" class="captcha"><br><br>
<img id="captcha_img" src="captcha.php?r=<?php echo rand();?>" alt="验证码">
<label><a href="javascript:void(0)" rel="external nofollow" onclick="document.getElementById('captcha_img').src='captcha.php?r='+Math.random()">换一个</a> </label>

captcha.php后面加上一个随机参数是为了实现换一个验证码的功能,,换一个功能通过简单的js即可实现。如果没有这个功能可以不用参数。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php设计模式 Template (模板模式)
Jun 26 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
基于PHP选项与信息函数的使用详解
May 10 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
ThinkPHP中的关联模型注意点
Jun 16 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 PHP
详解PHP数组赋值方法
Nov 07 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
PHP生成短网址方法汇总
Jul 12 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 PHP
php中file_get_contents()函数用法实例
Feb 21 #PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 #PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 #PHP
PHP+jQuery实现即点即改功能示例
Feb 21 #PHP
PHP hebrev()函数用法讲解
Feb 21 #PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 #PHP
PHP获取访问设备信息的方法示例
Feb 20 #PHP
You might like
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
php单链表实现代码分享
2016/07/04 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
javascript globalStorage类代码
2009/06/04 Javascript
快速排序 php与javascript的不同之处
2011/02/22 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
在Python中进行自动化单元测试的教程
2015/04/15 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
Python socket 套接字实现通信详解
2019/08/27 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
keras 多gpu并行运行案例
2020/06/10 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
Java工程师面试集锦之Spring框架
2013/06/16 面试题
初一体育教学反思
2014/01/29 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
工程承包协议书
2014/10/20 职场文书
党员示范岗材料
2014/12/19 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
spring cloud 配置中心native配置方式
2021/09/25 Java/Android