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);

相关推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql and 和where,关于mysql:连接sql查询中where和and子句的区别

本问题已经有最佳答案&#xff0c;请猛点这里访问。下面两个SQL查询有什么区别和号根据以下两个测试结果速度更快(237比460)。据我所知&#xff0c;这是一个标准。。氧化镁不&#xff0c;有细微的差别&#xff0c;你不能说没有差别除了语法之外没有别的区别。虽然只有一个简短的…

matlab里输出恒压的逆变器,基于IGBT逆变器的异步电机变频调速系统的MATLAB仿真...

异步电机变频调速系统电路仿真模型如图(4)所示。直流电压不621V&#xff0c;逆变器为IGBT 的三相半桥逆变器&#xff0c;电机为异步电机模块&#xff0c;其主电路由直流电压源、逆变器和电机依次相连。图(4)变频调速系统控制部分&#xff0c;利用“Step”模块设定频率指令f1*&a…

php 获取京东交易账号,PHP爬虫爬取京东列表

这里使用到了一个php插件下面是源码simple_html_dom.phpdefined(IN_ECS);define(HDOM_TYPE_ELEMENT, 1);define(HDOM_TYPE_COMMENT, 2);define(HDOM_TYPE_TEXT, 3);define(HDOM_TYPE_ENDTAG, 4);define(HDOM_TYPE_ROOT, 5);define(HDOM_TYPE_UNKNOWN, 6);define(HDOM_QUOTE_DOU…

星模php格,extend/base/TencentSms.php · 纵之格/ShopXO - Gitee.com

// ----------------------------------------------------------------------// | ShopXO 国内领先企业级B2C免费开源电商系统// ----------------------------------------------------------------------// | Copyright (c) 2011~2019 http://shopxo.net All rights reserve…

matlab中云模型,云模型简介与个人理解matlab程序.doc

.........................专业资料分享随着不确定性研究的深入&#xff0c;越来越多的科学家相信&#xff0c;不确定性是这个世界的魅力所在&#xff0c;只有不确定性本身才是确定的。在众多的不确定性中&#xff0c; HYPERLINK "/view/606111.htm" \t "_blank…

php dns刷新,Windows DNS缓存自动刷新

Windows DNS缓存自动刷新admin • 2018 年 09 月 04 日DNS(域名服务器)DNS(Domain Name Server)是进行域名和与之相对应的ip地址转换的服务器。DNS中保存了一张域名和与之相应的ip地址的表&#xff0c;以解析消息的域名。DNS轮训在统一主机添加多条A记录&#xff0c;这就是DNS轮…

php日期相减函数,倒计时函数_计算两个时间相差值_PHP函数

**PHP倒计时函数、求两个日期时间之间相差的时间函数、计算时差函数_PHP函数笔记**php/*** 求两个日期时间之间相差的时间* (针对1970年1月1日之后&#xff0c;求之前可以采用泰勒公式)* param string $day1 2016-10-01 10:01:08* param string $day2 2020-10-01 10:01:08* ret…

jq上传file到php,jQuery文件上传

插件描述&#xff1a;这是一个文件上传的展示&#xff0c;看很多插件&#xff0c;并不满意就自己写了一个&#xff0c;可能兼容性不是很好&#xff0c;没有准确进行测试过&#xff0c;还请各位不吝赐教更新时间&#xff1a;2019/3/25 下午8:53:17更新说明&#xff1a;修复上传成…

oracle导出建表主键,oracle主键自动生成 配合hibernate的生成策略详解

hibernate配合oracle自动生成主键策略有两种方法&#xff1a;A)设置ID的增长策略是sequence&#xff0c;同时指定sequence的名字&#xff0c;最好每个表建一个sequence&#xff0c;此种做法就如同MS-SQL,MY-SQL中的自动增长一样&#xff0c;不需要创建触发器&#xff0c;具体的…

oracle找到表的位置,查看Oracle表中的指定记录在数据文件中的位置

查看Oracle表中的指定记录位置select rowid,user_id from sshr.xx_user where user_id3010586select rowid,dbms_rowid.rowid_object(rowid) object_id,dbms_rowid.rowid_relative_fno(rowid) file_id,dbms_rowid.rowid_block_number(rowid) block_id,dbms_rowid.rowid_row_num…

oracle异常抛出,ORACLE 存储过程异常捕获并抛出

for tab_name in tables loopexecute immediate drop table ||tab_name; --此处可能会报错end loop;当前情况是&#xff0c;循环表&#xff0c;进行删除&#xff0c;如果出现表不存在&#xff0c;则会异常中断&#xff0c;导致整个存储过程挂掉&#xff0c;需求是要能跳过错误的…

oracle的主目录怎么删除,删除oracle数据库卸载

oracle 10g在win上卸载软件环境1 、Windows XPOracle 10g2、 Oracle安装路径为 d:\Oracle实现方法1 、开始—设置—控制面板—管理工具—服务停止所有 Oracle服务;Or acleUfiCQiisoXeorcl 名称 I细I好I启动类型I aat为ffetwork Frov-isi. 「, 巴SOrae le StrTice…

oracle数据库相关知识,Oracle数据库相关知识点复习

一.Oracle数据库中常用的数据类型varchar2(长度)可变长字符串char(长度)定长number()表示整数或者浮点数number(8) number(8,2)clog字符的大对象blog二进制的大对象二.数据库查询1)SELECT语句从表中提取查询数据.语法为SELECT [DISTINCT] {column1,column2,…} FROM tablename …

Linux中批量创建空白文件,在Linux中批量创建和修改文件或目录

1. 用一条命令直接创建[fredRoyalmile Auto_Ops]$ touch seq 10[fredRoyalmile Auto_Ops]$ ls1 10 2 3 4 5 6 7 8 9[fredRoyalmile Auto_Ops]$ touch linux-{A..G}[fredRoyalmile Auto_Ops]$ lslinux-A linux-B linux-C linux-D linux-E linux-F linux-G[fredRo…

linux查看cpu占用最多的进程,Linux下查看占用CPU资源最多的几个进程

BPM SharePoint解决方案分享一.需求分析 SharePoint作为微软推出的协同类平台产品,为客户提供了门户.内容.文档.流程.社区.搜索.BI等一系列的解决方案,然而其流程功能由于设计理念差异,不能完全满足客户的需求,主要原因 ...nodejs字符与字节之间的转换new Buffer("Hello W…

linux内核 sin头文件,Linux内核中中断request_irq详解--中断共享问题解决

。函数原型如下&#xff1a;2.4 内核int request_irq (unsignedintirq,void (*handler)(int,void*,structpt_regs*),unsignedlongfrags,constchar*device,void*dev_id);2.6 内核request_irq(unsignedintirq,irq_handler_thandler,unsignedlongflags,constchar*name,void*dev);参…

linux缓存文件用户权限错误,Laravel运行缓存权限问题

Laravel 开发中遇到权限问题 failed to open stream: Permission denied错误现象&#xff1a;messg:"file_put_contents(.../storage/framework/cache/data/03/8c/03xxxxxx):failed to open stream: Permission denied"status: 500经过搜索发现网络上大量的解决方案是…

linux误删表空间文件,UNDO表空间下的数据文件被误删除后的处理方法

UNDO表空间下的数据文件被误删除后的处理方法&#xff1a;操作前备份数据库&#xff0c;以避免更大的损失。思路&#xff1a;1、把误删除的数据文件offline2、正常打开数据库后创建新的UNDO表空间及数据文件3、修改相应参数指向新的UNDO表空间4、重新启动数据库验证5、删除旧的…

linux内核有ebpf吗,聊聊很重要的内核技术eBPF

在2018年的 Linux Plumber 大会上&#xff0c;eBPF成了亮点&#xff0c;有24个议题提到了 eBPF&#xff0c;可以预计eBPF会成为一大技术热点。eBPF(Extended Berkeley Packet Filter) 的核心是驻留在 kernel 的高效虚拟机。最初的目的是高效网络过滤框架&#xff0c;前身是 BPF…

linux 访问日志ip排序,Linux通过日志文件统计IP访问次数排序

假设我的日志文件内容如下&#xff1a;218.92.217.53 - - [22/Nov/2017:17:26:27 0800] "GET /images/rand HTTP/1.0" 200 1785 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC…