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 和 MySQL 开发的 8 个技巧
Jan 02 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
PHP实现下载功能的代码
Sep 29 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
PHP的拦截器实例分析
Nov 03 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
php实现转换ubb代码的方法
Jun 18 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
注意!PHP 7中不要做的10件事
Sep 18 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 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
ThinkPHP之A方法实例讲解
2014/06/20 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
javascript 主动派发事件总结
2011/08/09 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
vue项目实战总结篇
2018/02/11 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
Python使用chardet判断字符编码
2015/05/09 Python
Python数据类型详解(二)列表
2016/05/08 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
python实现横向拼接图片
2020/03/23 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
高中生班主任评语
2014/04/25 职场文书
公司投资建议书
2014/05/16 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
朋友离别感言
2015/08/04 职场文书
Django项目如何获得SSL证书与配置HTTPS
2021/04/30 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技