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_Flame(Version:Progress)的原代码
Oct 09 PHP
谈谈PHP语法(3)
Oct 09 PHP
php中iconv函数使用方法
May 24 PHP
在wamp集成环境下升级php版本(实现方法)
Jul 01 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
PHP数学运算与数据处理实例分析
Apr 01 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 PHP
PHP简单实现正则匹配省市区的方法
Apr 13 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 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提取中文首字母
2008/04/09 PHP
php实现mysql封装类示例
2014/05/07 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
PHP chr()函数讲解
2019/02/11 PHP
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
2020/04/27 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
Python运维开发之psutil库的使用详解
2018/10/18 Python
Python3几个常见问题的处理方法
2019/02/26 Python
python简单实现AES加密和解密
2019/03/28 Python
python制作抖音代码舞
2019/04/07 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
python 日志 logging模块详细解析
2020/03/31 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
公司门卫的岗位职责
2014/02/19 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
2014年团队工作总结
2014/11/24 职场文书
工作表扬信
2015/01/17 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
2016新年感言
2015/08/03 职场文书
小学班主任教育随笔
2015/08/15 职场文书