这篇文章介绍的内容是关于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生成指定位数验证码与可控干扰元素第二篇相关推荐

  1. 添加指定的元素,到指定的位置,后面的元素整体后移一位

    /*** 添加指定的元素,到指定的位置,后面的元素整体后移一位*/ public class Demo2 {public static void main(String[] args) {//定义一个 ...

  2. php 元素插入数组指定位置,数组任意位置插入元素,删除特定元素的实例

    如下所示: $ary = array( array('t'=>1,'y'=>2), array('t'=>2,'y'=>9) ); $t = array_splice( $ar ...

  3. java删除有序数组中的重复元素_java去除已排序数组中的重复元素

    题目描述 给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度. 要求: 不要给数组分配额外的空间,你必须使用常量的内存大小进行原地操作. 例如: 给出数组A=[1, ...

  4. php怎么构造一个验证码,PHP封装一个生成验证码的函数

    整体的思路: 1.准备画布 2.生成颜色 3.生成的字符范围 4.开始写字 5.插入干扰线(点) 6.指定输出的类型 7.准备输出图片 8.销毁 // 生成随机验证码的方法 function veri ...

  5. java 8位随机数_JAVA中生成指定位数随机数的方法总结

    JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 1 public static String getRandom1(intlen) {2 int rs = ...

  6. java生成验证码工具类_Java生成图形验证码工具类

    生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...

  7. python随机产生10个数然后前5个升序后5个降序_编写程序,生成包含 20 个随机数的列表,然后将前 10 个元素升序排列,后 10 个元素降序排列,并输出结果。_学小易找答案...

    [填空题]在 Python3.x 中 input() 函数接收到的用户输入数据一律为 ________ . [填空题]运算符% (可以.不可以)对浮点数进行求余数操作. [简答题]解释 Python ...

  8. MySQL 生成随机数字、字符串、日期、验证码以及 UUID

    文章目录 生成随机数字 生成 0 到 1 之间的随机数 生成指定范围内的随机数 生成 6 位数字手机验证码 生成遵循正态分布的随机数 生成随机字符串 生成固定长度的随机字符串 生成可变长度的随机字符串 ...

  9. Java验证码(图片、字符串)生成工具

    验证码生成工具 本工具可以生成: 数字+字符 纯数字 纯字符 验证码样式: 字符串 base64 字符图片验证码 主要方法: generateCaptchaImage:获取图片验证码 generate ...

最新文章

  1. 2021年3月15日 腾讯PCG运营开发实习面试(一、二、三面)(面经含总结)
  2. iOS10系统下调用系统功能权限以及相关设置
  3. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...
  4. C++ 与 G++的区别
  5. window下jansson安装和使用
  6. 携程基于Flink的实时特征平台
  7. android封装全局调用的toast_Android实用的Toast工具类封装
  8. CCF201403-5 任务调度(100分题解链接)
  9. 解线性方程组——有机物燃烧的化学方程组的配平
  10. 动图展示16个Sublime Text快捷键用法 ---------------物化的sublime
  11. drupal.behavior 和 document.ready 没有直接的关系
  12. android 魅族 webview,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
  13. android应用流程图,Android APP 启动流程简析
  14. Unity3D数字孪生开发笔记——软件基础篇
  15. oracle 8002,ORACLE 8.1.7 数据库ORA-600 4194故障恢复
  16. sketch插件 android,Sketch 插件大集合
  17. 电脑开机提示Exiting PXE ROM解决办法
  18. 【Android】底部导航栏【BottomNavigationView】+【ViewPage2】
  19. IntelliJ IDEA 常见文件类型的图标介绍
  20. 企业级监控平台,监控系统选型

热门文章

  1. 什么端口可以抓LINUX,linux下开启某个端口的方法:可用于SQL
  2. pythonvim编辑教程_Pycharm学习教程(6) Pycharm作为Vim编辑器使用
  3. eclipse 快捷键及插件
  4. alonedb.php on line 58,SHOPEX出现\core\include_v5\AloneDB.php on line 58的解决办法
  5. EBOOT跳转到NK的过程
  6. 服务器部署 配置jetty运行参数_Zookeeper+websocket实现对分布式服务器的实时监控...
  7. python自动下载邮件_python实现邮件自动化
  8. 联想计算机如何设置用户名和密码,联想电脑怎样设密码?联想电脑设置密码方法步骤【图文】...
  9. MySQL笔记——打开日志
  10. @autowired注解 抽象类_别再用ifelse了,用注解去代替他吧