php 生成验证码干扰元素,PHP生成指定位数验证码与可控干扰元素第二篇
这篇文章介绍的内容是关于PHP生成指定位数验证码与可控干扰元素第二篇,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
生成验证码:文件名为:buildVerifyCode.func.php<?php
//生成指定位数可控混合验证码
function buildVerifyCode($type,$length){
//$type0,1,2可以为数字,大小写字母,数字加大小写字母验证码
//$length指定了验证码的长度
switch($type){
case 0:
$string=join('',range(0,9));
break;
case 1:
//range('a','z')将括号中的内容作为键值生成一个索引数组
//array_merge($array1,$array2)合并两个数组中的键值,生成新索引数组
//join('',$array)以空连接数组中的值,以数组的内容生成字符串
$string=join('',array_merge(range('a','z'),range('A','Z')));
break;
case 2:
$string=join('',array_merge(range('a','z'),range('A','Z'),range(0,9)));
break;
}
//str_shuffle打乱字符串,返回值是字符串,不像shuffle,返回值是bool
$string=str_shuffle($string);
//substr截取$length位数的验证码
return substr($string,0,$length);
}
生成图片验证码:文件名为:getVerifyCode.func.php<?php
function getVerifyCodeImg($type=2,$length=4,$pixel=false,$line=false){
$width=100;
$height=30;
//新建画布,默认黑色底色
$image=imagecreatetruecolor($width,$height);
//新建白色,用于后面覆盖黑色的底色
$white=imagecolorallocate($image,255,255,255);
//新建白色矩形区域,覆盖原始画布
imagefilledrectangle($image,1,1,$width-1,$height-1,$white);
//引入文件
require 'buildVerifyCode.func.php';
//调用buildVerifyCode方法
$chars=buildVerifyCode($type,$length);
for($i=0;$i
$size=mt_rand(14,16);
$angle=mt_rand(-15,15);
$x=(100/$length)*$i;
$y=mt_rand(20,25);
$color=imagecolorallocate($image,mt_rand(70,100),mt_rand(50,120),mt_rand(70,130));
$fontfiles=['msyh.ttc','msyhbd.ttc','msyhl.ttc','simsun.ttc','Sitka.ttc'];
$fontfile="../fonts/".$fontfiles[mt_rand(0,4)];
$text=substr($chars,$i,1);
imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text);
}
if($pixel){
for($i=0;$i
$color=imagecolorallocate($image,mt_rand(150,160),mt_rand(140,170),mt_rand(130,200));
imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$color);
}
}
if($line){
for($i=0;$i
$color=imagecolorallocate($image,mt_rand(150,180),mt_rand(110,170),mt_rand(140,190));
imageline($image,mt_rand(0,$width-2),mt_rand(0,$height-3),mt_rand(0,$width-4),mt_rand(0,$height-5),$color);
}
}
header('content-type:image/png');
imagepng($image);
}
调用验证码:文件名为:getVerifyImg.php<?php
// 测试
// require 'buildVerifyCode.func.php';
// echo buildVerifyCode(2,4);
require 'getVerifyCodeImg.php';
/**
* $type验证码类型,1为纯数字,2为大小写字母,3为数字加大小写字母
* $length验证码长度,建议设置区间为4-6
* $pixel干扰元素小点,建议设置200
* $line干扰元素线条,建议设置4
* getVerifyCodeImg($type,$length,$pixel,$line);
*/
getVerifyCodeImg(2,6,200,4);
相关推荐:
php 生成验证码干扰元素,PHP生成指定位数验证码与可控干扰元素第二篇相关推荐
- 添加指定的元素,到指定的位置,后面的元素整体后移一位
/*** 添加指定的元素,到指定的位置,后面的元素整体后移一位*/ public class Demo2 {public static void main(String[] args) {//定义一个 ...
- php 元素插入数组指定位置,数组任意位置插入元素,删除特定元素的实例
如下所示: $ary = array( array('t'=>1,'y'=>2), array('t'=>2,'y'=>9) ); $t = array_splice( $ar ...
- java删除有序数组中的重复元素_java去除已排序数组中的重复元素
题目描述 给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度. 要求: 不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作. 例如: 给出数组A=[1, ...
- php怎么构造一个验证码,PHP封装一个生成验证码的函数
整体的思路: 1.准备画布 2.生成颜色 3.生成的字符范围 4.开始写字 5.插入干扰线(点) 6.指定输出的类型 7.准备输出图片 8.销毁 // 生成随机验证码的方法 function veri ...
- java 8位随机数_JAVA中生成指定位数随机数的方法总结
JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 1 public static String getRandom1(intlen) {2 int rs = ...
- java生成验证码工具类_Java生成图形验证码工具类
生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...
- python随机产生10个数然后前5个升序后5个降序_编写程序,生成包含 20 个随机数的列表,然后将前 10 个元素升序排列,后 10 个元素降序排列,并输出结果。_学小易找答案...
[填空题]在 Python3.x 中 input() 函数接收到的用户输入数据一律为 ________ . [填空题]运算符% (可以.不可以)对浮点数进行求余数操作. [简答题]解释 Python ...
- MySQL 生成随机数字、字符串、日期、验证码以及 UUID
文章目录 生成随机数字 生成 0 到 1 之间的随机数 生成指定范围内的随机数 生成 6 位数字手机验证码 生成遵循正态分布的随机数 生成随机字符串 生成固定长度的随机字符串 生成可变长度的随机字符串 ...
- Java验证码(图片、字符串)生成工具
验证码生成工具 本工具可以生成: 数字+字符 纯数字 纯字符 验证码样式: 字符串 base64 字符图片验证码 主要方法: generateCaptchaImage:获取图片验证码 generate ...
最新文章
- 2021年3月15日 腾讯PCG运营开发实习面试(一、二、三面)(面经含总结)
- iOS10系统下调用系统功能权限以及相关设置
- python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...
- C++ 与 G++的区别
- window下jansson安装和使用
- 携程基于Flink的实时特征平台
- android封装全局调用的toast_Android实用的Toast工具类封装
- CCF201403-5 任务调度(100分题解链接)
- 解线性方程组——有机物燃烧的化学方程组的配平
- 动图展示16个Sublime Text快捷键用法 ---------------物化的sublime
- drupal.behavior 和 document.ready 没有直接的关系
- android 魅族 webview,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
- android应用流程图,Android APP 启动流程简析
- Unity3D数字孪生开发笔记——软件基础篇
- oracle 8002,ORACLE 8.1.7 数据库ORA-600 4194故障恢复
- sketch插件 android,Sketch 插件大集合
- 电脑开机提示Exiting PXE ROM解决办法
- 【Android】底部导航栏【BottomNavigationView】+【ViewPage2】
- IntelliJ IDEA 常见文件类型的图标介绍
- 企业级监控平台,监控系统选型
热门文章
- 什么端口可以抓LINUX,linux下开启某个端口的方法:可用于SQL
- pythonvim编辑教程_Pycharm学习教程(6) Pycharm作为Vim编辑器使用
- eclipse 快捷键及插件
- alonedb.php on line 58,SHOPEX出现\core\include_v5\AloneDB.php on line 58的解决办法
- EBOOT跳转到NK的过程
- 服务器部署 配置jetty运行参数_Zookeeper+websocket实现对分布式服务器的实时监控...
- python自动下载邮件_python实现邮件自动化
- 联想计算机如何设置用户名和密码,联想电脑怎样设密码?联想电脑设置密码方法步骤【图文】...
- MySQL笔记——打开日志
- @autowired注解 抽象类_别再用ifelse了,用注解去代替他吧