php怎么构造一个验证码,PHP封装一个生成验证码的函数
整体的思路:
1、准备画布
2、生成颜色
3、生成的字符范围
4、开始写字
5、插入干扰线(点)
6、指定输出的类型
7、准备输出图片
8、销毁
// 生成随机验证码的方法
function verify($width = 100, $height = 40, $num = 5, $type = 3)
{
// 1、准备画布
$image = imagecreatetruecolor($width, $height);
imagefilledrectangle($image, 0, 0, $width, $height, lightColor($image)); //给画布填充一个浅色背景
// 2、生成颜色
// 3、需要什么字符
$string = '';
switch ($type) {
case 1: //0-9的数字
$str = '0123456789';
//str_shuffle($str); 随机打乱$str
$string = substr(str_shuffle($str), 0, $num);
break;
case 2: //a-b的字母
$arr = range('a', 'z');
shuffle($arr);
$tmp = array_slice($arr, 0, $num);
$string = join('', $tmp);
break;
case 3: //0-9 a-z A-Z的随机组合
$str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$string = substr(str_shuffle($str), 0, $num);
break;
}
// 4、开始写字
for ($i = 0; $i < $num; $i++) {
$x = floor($width / $num) * $i;
$y = mt_rand(10, $height - 20);
imagechar($image, 5, $x, $y, $string[$i], deepColor($image));
}
// 5、插入干扰线(点)
for ($i = 0; $i < 5; $i++) {
imagearc($image, mt_rand(10, $width), mt_rand(10, $height), mt_rand(10, $width), mt_rand(10, $height), mt_rand(0, 10), mt_rand(0, 270), deepColor($image));
}
for ($i = 0; $i < 50; $i++) {
imagesetpixel($image, mt_rand(0, $width), mt_rand(10, $height), deepColor($image));
}
// 6、指定输出的类型
header('Content-type:image/png');
// 7、准备输出图片
imagepng($image);
// 8、销毁
imagedestroy($image);
return $string;
}
// 生成浅的颜色
function lightColor($image)
{
return imagecolorallocate($image, mt_rand(130, 255), mt_rand(130, 255), mt_rand(130, 255));
}
// 生成深色
function deepColor($image)
{
return imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
}
verify();
php怎么构造一个验证码,PHP封装一个生成验证码的函数相关推荐
- 综合整理的一个可以直接使用的生成验证码的代码
学习javaweb时,首先拿了一个用户注册界面试试手,写完了之后觉得应该在注册加上一个验证码验证,于是从网上找如何在项目中添加验证码,找了很多博客,综合了一下整理了一份可以直接向项目中直接添加的代码, ...
- 浙大python读者验证码_Python实现简单生成验证码功能【基于random模块】
本文实例讲述了Python实现简单生成验证码功能.分享给大家供大家参考,具体如下: 验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内 ...
- Spring Boot 配置Kaptcha(谷歌验证码工具)(生成验证码、验证验证码)
1 Kaptcha 1.1 Kaptcha简介 Kaptcha 是一个扩展自simplecaptcha的验证码库,默认情况下,Kaptcha非常易于设置和使用,并且默认输出会产生一个很难验证的验证码. ...
- uniapp封装网络请求_八张图带你走进“通过一个完美请求封装一个网络模块”
本文提供视频课程讲解,需要的小伙伴可以点赞+私信''网络模块''前往领取 学习大纲 1.网络模块在应用中的地位 1.1当今占统治地位的网络组件 OKHttp OkHttp 是一个相对成熟的解决方案,据 ...
- 最简单的验证码(利用JSP生成验证码)
可以直接利用jsp输出验证码.jsp文件如下: <%@ page contentType="image/jpeg"import="java.awt.*, java. ...
- pil库修改图片大小_Gvcode库:一个更简单的、华人开源的、自动生成验证码的python库...
1 说明: ===== 1.1 gvcode全称:graphic-verification-code. 1.2 基本介绍,一秒搞懂. 1.3 并对源码进行修改一个小bug,教您如何修改源码,解决bug ...
- Python合并PDF、操作图片以及生成验证码
2019独角兽企业重金招聘Python工程师标准>>> 在记录今天重点内容的笔记之前,我想要先记录一下匿名函数,因为之前对匿名函数的理解仅停留在了解的状态,以至于实际应用很困难,近两 ...
- 验证码图片 java_Java实现图片验证码具体代码
本文实例为大家分享了Java图片验证码代码,供大家参考,具体内容如下 网页显示效果: index.jsp使用两种方式强制图片更新: 1.设置图片输出时不缓存. 2.用js改变请求的地址. 第一个web ...
- 邮箱发送验证码和短信发送验证码的学习笔记
邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...
最新文章
- c++学习书籍推荐《Visual C++2008入门经典》下载
- java产生的数字发送到页面_JAVA中数字证书的维护及生成方法
- everything安装版和便携版有什么区别_国行版爱他美卓萃和普通版有什么区别,一定要选卓萃吗?...
- Python 自动生成环境依赖包 requirements
- SpringBoot 精通系列-构建一个RESTful Web 服务
- easyui 渲染问题(转)
- 麻省理工线性代数03
- 互联网背景下为什么会出现NoSQL?
- 厦门大学计算机科学夏令营过程,厦门大学信息学院计算机系夏令营学生见面会如期召开-厦门大学计算机科学系...
- 快牙网传——轻松传文件
- 霍夫直线检测原理详解
- 外卖也智能!美团骑手智能助手的技术与实践
- win7上怎么安装linux系统安装教程,怎么装系统双系统安装教程 win7 linux
- pb11.5调用系统打印机 Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref st
- SQL Server 2016数据库下载
- list object has no attribute ZScan_书香家庭NO.31 | 成长路上飘书香
- java 函数 作为参数_如何在Java中将函数作为参数传递?
- SVN Clean up失败的解决方法
- 卡巴斯基公布财报,2020年业务稳定增长
- windows server 2016 搭建AD域服务
热门文章
- 苹果或将推出可折叠iPad:支持5G 对抗双屏Surface
- 明星分手文案火了!为了营销 你们这些商家也是很努力啊...
- 趣头条确认总编辑肖厚君离职:对现有业务没有任何影响
- 苹果AirPods 2新爆料:无线充电盒重量增加 支持快速充电
- iQOO手机发布后 黑鲨游戏手机CEO吴世敏:黑鲨2 稳了
- 就算边框缩窄到极致也不用刘海屏?魅族16s最新渲染图曝光
- python多线程 多进程
- 开发Adobe AIR的原生扩展
- 使用flash在IPAD2上播放FLV效率不高
- linux和windows下的“回车符”和“换行符”