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 相关文章推荐
杏林同学录(四)
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
PHP实现获取中英文首字母
Jun 19 PHP
PHP实现多文件上传的方法
Jul 08 PHP
又十个超级有用的PHP代码片段
Sep 24 PHP
PHP验证码生成原理和实现
Jan 24 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
php简单截取字符串代码示例
Oct 19 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
php把字符串指定字符分割成数组的方法
Mar 12 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
Laravel学习教程之View模块详解
2017/09/18 PHP
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
jstree的简单实例
2016/12/01 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
python分析网页上所有超链接的方法
2015/05/08 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
python中reload重载实例用法
2020/12/15 Python
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
小学三年级数学教学反思
2014/01/31 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
小学班主任培训方案
2014/06/04 职场文书
尊师重教演讲稿
2014/09/04 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
企业百日安全活动总结
2015/05/07 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
民主生活会意见
2015/06/05 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL