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获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
php实现递归与无限分类的方法
Feb 16 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
PHP实现webshell扫描文件木马的方法
Jul 31 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 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
解析zend Framework如何自动加载类
2013/06/28 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
javascript实现异形滚动轮播
2019/11/28 Javascript
js仿360开机效果
2019/12/26 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
python实现ID3决策树算法
2018/08/29 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
预备党员思想汇报范文
2014/01/11 职场文书
生态养殖创业计划书
2014/05/06 职场文书
法律顾问服务方案
2014/05/15 职场文书
某某同志考察材料
2014/05/28 职场文书
应聘护士求职信
2014/07/21 职场文书
拾金不昧感谢信
2015/01/21 职场文书
Go 中的空白标识符下划线
2022/03/25 Golang