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中将数组转成XML格式的实现代码
Aug 08 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
解析php时间戳与日期的转换
Jun 06 PHP
php操作xml
Oct 27 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
nginx下安装php7+php5
Jul 31 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 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学习之字符串比较和查找
2011/04/17 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
php实现上传图片文件代码
2015/07/19 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
详解Python的Django框架中的中间件
2015/07/24 Python
flask中的wtforms使用方法
2018/07/21 Python
django中的图片验证码功能
2019/09/18 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
python中if嵌套命令实例讲解
2021/02/25 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
车辆安全检查制度
2014/01/12 职场文书
高中地理教学反思
2014/01/29 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript