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代码DOS造成用光网络带宽
Mar 01 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
PHP中常用的魔术方法
Apr 28 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
如何利用PHP实现上传图片功能详解
Sep 24 PHP
php实现JWT验证的实例教程
Nov 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
建立动态的WML站点(三)
2006/10/09 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
使用cx_freeze把python打包exe示例
2014/01/24 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python binascii 进制转换实例
2019/06/12 Python
python实现简单井字棋小游戏
2020/03/05 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
出纳岗位职责范本
2013/12/01 职场文书
年度考核表个人总结
2015/03/06 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL