整体的思路:

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封装一个生成验证码的函数相关推荐

  1. 综合整理的一个可以直接使用的生成验证码的代码

    学习javaweb时,首先拿了一个用户注册界面试试手,写完了之后觉得应该在注册加上一个验证码验证,于是从网上找如何在项目中添加验证码,找了很多博客,综合了一下整理了一份可以直接向项目中直接添加的代码, ...

  2. 浙大python读者验证码_Python实现简单生成验证码功能【基于random模块】

    本文实例讲述了Python实现简单生成验证码功能.分享给大家供大家参考,具体如下: 验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内 ...

  3. Spring Boot 配置Kaptcha(谷歌验证码工具)(生成验证码、验证验证码)

    1 Kaptcha 1.1 Kaptcha简介 Kaptcha 是一个扩展自simplecaptcha的验证码库,默认情况下,Kaptcha非常易于设置和使用,并且默认输出会产生一个很难验证的验证码. ...

  4. uniapp封装网络请求_八张图带你走进“通过一个完美请求封装一个网络模块”

    本文提供视频课程讲解,需要的小伙伴可以点赞+私信''网络模块''前往领取 学习大纲 1.网络模块在应用中的地位 1.1当今占统治地位的网络组件 OKHttp OkHttp 是一个相对成熟的解决方案,据 ...

  5. 最简单的验证码(利用JSP生成验证码)

    可以直接利用jsp输出验证码.jsp文件如下: <%@ page contentType="image/jpeg"import="java.awt.*, java. ...

  6. pil库修改图片大小_Gvcode库:一个更简单的、华人开源的、自动生成验证码的python库...

    1 说明: ===== 1.1 gvcode全称:graphic-verification-code. 1.2 基本介绍,一秒搞懂. 1.3 并对源码进行修改一个小bug,教您如何修改源码,解决bug ...

  7. Python合并PDF、操作图片以及生成验证码

    2019独角兽企业重金招聘Python工程师标准>>> 在记录今天重点内容的笔记之前,我想要先记录一下匿名函数,因为之前对匿名函数的理解仅停留在了解的状态,以至于实际应用很困难,近两 ...

  8. 验证码图片 java_Java实现图片验证码具体代码

    本文实例为大家分享了Java图片验证码代码,供大家参考,具体内容如下 网页显示效果: index.jsp使用两种方式强制图片更新: 1.设置图片输出时不缓存. 2.用js改变请求的地址. 第一个web ...

  9. 邮箱发送验证码和短信发送验证码的学习笔记

    邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...

最新文章

  1. c++学习书籍推荐《Visual C++2008入门经典》下载
  2. java产生的数字发送到页面_JAVA中数字证书的维护及生成方法
  3. everything安装版和便携版有什么区别_国行版爱他美卓萃和普通版有什么区别,一定要选卓萃吗?...
  4. Python 自动生成环境依赖包 requirements
  5. SpringBoot 精通系列-构建一个RESTful Web 服务
  6. easyui 渲染问题(转)
  7. 麻省理工线性代数03
  8. 互联网背景下为什么会出现NoSQL?
  9. 厦门大学计算机科学夏令营过程,厦门大学信息学院计算机系夏令营学生见面会如期召开-厦门大学计算机科学系...
  10. 快牙网传——轻松传文件
  11. 霍夫直线检测原理详解
  12. 外卖也智能!美团骑手智能助手的技术与实践
  13. win7上怎么安装linux系统安装教程,怎么装系统双系统安装教程 win7 linux
  14. pb11.5调用系统打印机 Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref st
  15. SQL Server 2016数据库下载
  16. list object has no attribute ZScan_书香家庭NO.31 | 成长路上飘书香
  17. java 函数 作为参数_如何在Java中将函数作为参数传递?
  18. SVN Clean up失败的解决方法
  19. 卡巴斯基公布财报,2020年业务稳定增长
  20. windows server 2016 搭建AD域服务

热门文章

  1. 苹果或将推出可折叠iPad:支持5G 对抗双屏Surface
  2. 明星分手文案火了!为了营销 你们这些商家也是很努力啊...
  3. 趣头条确认总编辑肖厚君离职:对现有业务没有任何影响
  4. 苹果AirPods 2新爆料:无线充电盒重量增加 支持快速充电
  5. iQOO手机发布后 黑鲨游戏手机CEO吴世敏:黑鲨2 稳了
  6. 就算边框缩窄到极致也不用刘海屏?魅族16s最新渲染图曝光
  7. python多线程 多进程
  8. 开发Adobe AIR的原生扩展
  9. 使用flash在IPAD2上播放FLV效率不高
  10. linux和windows下的“回车符”和“换行符”