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正则提取不包含指定网址的图片地址的例子
Apr 21 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
PHP读取XML格式文件的方法总结
Feb 27 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
Jun 11 PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 PHP
解决laravel资源加载路径设置的问题
Oct 14 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
Centos7安装swoole扩展操作示例
Mar 26 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实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
python爬虫工具例举说明
2020/11/30 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
HTML5的新特性(1)
2016/03/03 HTML / CSS
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
大三自我鉴定范文
2013/10/05 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
Win2008系统搭建DHCP服务器
2022/06/25 Servers