封装PHP验证码方法
/**
* 生成验证码
* @param integer $width 图片宽度
* @param integer $height 图片高度
* @param string $type 验证码类型
* @param integer $length 验证码长度
* @return string 验证码字符串
*/
function validateCode($width=100, $height=30, $type='mixed', $length=4) {
$im = imagecreatetruecolor($width, $height); // 创建画布
$white = imagecolorallocate($im, 255, 255, 255); // 分配颜色
imagefilledrectangle($im, 0, 0, $width, $height, $white); // 矩形填充
// 产生随机色
function randColor($im) {
return imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
}
switch($type) {
case 'num': // 数字型
$str = implode('', range(0, 9));
break;
case 'letter': // 字母型
$str = implode('', array_merge(range('a', 'z'), range('A', 'Z')));
break;
case 'mixed': // 混合型
$str = implode('', array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9)));
break;
}
$str = substr(str_shuffle($str), 0, $length); // 截取
for ($i = 0; $i < $length; $i++) { // 每次写入一个字符
imagettftext($im, 18, mt_rand(-20, 20), $i*($width/$length), mt_rand($height-10, $height-5), randColor($im),'ariblk.ttf', $str[$i]); //ariblk.ttf字体文件可替换
}
for ($i = 0; $i < 100; $i++) { // 加入像素点
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), randColor($im));
}
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
return $str;
}
可生成指定位数的数字型、字母型、混合型验证码。
封装PHP验证码方法的更多相关文章
- 总结Allegro元件封装(焊盘)制作方法[修整]
总结Allegro元件封装(焊盘)制作方法 在Allegro系统中,建立一个零件(Symbol)之前,必须先建立零件的管脚(Pin).元件封装大体上分两种,表贴和直插.针对不同的封装,需要制作不同的P ...
- JS如何封装一些列方法为一个对象的操作,然后集中管理这些操作,方便修改和调用
var Api = { ajax:{ // 添加项目 旧! add_project : function(pro_name, html, css, js,callback) { $.post(&quo ...
- PHP封装Excel表方法使用流程
今天总结了一下Excel表的封装和导出使用,原理 经常使用与一些日常报表, 数据报表, 实现方法比较简单, 一次封装, 简单的方法调用,简单~ 废话不多说,直接入正题, 先说下重要的参数要记住的东西 ...
- javascript封装自定义滚动条方法,可自定义四个边框滚动条
还是根据我的个人习惯封装了一个方法 setScroll({ box :父盒子DOM对象, content : 内容盒子DOM对象, scrollall : 滚动条大盒子DOM对象, scroll : ...
- 伪验证码(含随机验证码方法)js+css
HTML----------------------------------------------<!DOCTYPE html><html><head><m ...
- 在jsp提交表单的参数封装到一个方法里
建议去看一下孤傲苍狼写的Servlet+JSP+JavaBean开发模式(http://www.cnblogs.com/xdp-gacl/p/3902537.html), 最好把他JavaWeb学习总 ...
- php 创建验证码方法
php创建验证码方法: <?php function getVerify($length=4,$sessName='verify'){ //验证码 //获取字符串 去除01ol等较难辨认字符 $ ...
- 几种封装javaBean的方法
开发框架时,经常需要使用java对象(javaBean)的属性来封装程序的数据,封装javaBean的方法有很多,比如反射,内省,以及使用工具类.下面从反射开始介绍. 1.javaBean介绍: 简介 ...
- Python类总结-封装(私有属性,方法)
封装基础 广义上面向对象的封装:代码的保护,面向对象的思想本身就是一种封装 只让自己的对象能调用自己类中的方法 狭义上的封装-面向对象三大特性之一(私有变量,用公有的方法封装私有属性,方法叫封装) 把 ...
随机推荐
- 转载:2.2.3 配置项的注释《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19628.html 如果有一个配置项暂时需要注释掉,那么可以加"#"注释掉这一行配置.例如: #pid ...
- C#中Convert.ToInt32、int.TryParse、(int)和int.Parse四者的区别
Convert.ToInt32.(int)和int.Parse三者的区别: 首先:Convert.ToInt32 适合将object类类型转换成int类型,如Convert.ToInt32(sessi ...
- PHP接口继承及接口多继承原理与实现方法详解
在PHP的接口中,接口可以继承接口.虽然PHP类只能继承一个父类(单继承),但是接口和类不同,接口可以实现多继承,可以继承一个或者多个接口.当然接口的继承也是使用extends关键字,要多个继承的话只 ...
- CentOS中在/etc/rc.local添加开机自启动项启动失败
应项目要求需要在开机的时候启动自己的Agent程序,想当然的直接就往/etc/rc.local当中添加启动命令,结果重启之后发现什么都没有发生....一开始还以为是Python路径的问题,结果改成绝对 ...
- Windows安装使用Openssl
1.什么是openssl? 2.下载安装 三方下载地址 备用64位和32位下载地址 选择32位或者64位合适的版本下载,例如Win64OpenSSL_Light-1_0_2h.exe: 设置环境变量, ...
- eclipse中Ruby环境搭建
用Eclipse学习Watir.Eclipse支持Ruby的插件:RDT(Ruby Development Tools),下载下来试用了一下,感觉还是不错的.第一步:获取RDT,通过以下链接可以获得R ...
- html中hr的各种样式使用
第一种: <hr style=" height:2px;border:none;border-top:2px dotted #185598;" /> height:2p ...
- poj 2031 给出每个结点的3维坐标 以及结点的半径 (MST)
3维空间中有N个圆球,给出x y z 以及圆球的半径 ,求最小生成树 边的权值为两个圆球间的距离 如果圆球相互接触 则权值为0 求最小的权值和 Sample Input 3 //n10.000 10. ...
- java:合并两个排序的整数数组A和B变成一个新的数组。新数组也要有序。
合并两个排序的整数数组A和B变成一个新的数组.新数组也要有序. 样例 1: 输入: A=[1], B=[1] 输出:[1,1] 样例解释: 返回合并后的数组. 样例 2: 输入: A=[1,2,3,4 ...
- Codeforces Round #317 (div 2)
Problem A Arrays 思路:水一水. #include<bits/stdc++.h> using namespace std; ; int n1,n2,k,m,a[N],b[N ...