/**

* @param number $type 默认是数字

* @param number $length 默认4位长度

* @param string $codeName verifyCode

* @param number $pixel 100个点

* @param number $line 0个直线

* @param number $arc 0个弧

* @param number $width 画布宽度

* @param number $height 画布高度

* @param unknown $fontfiles 字体库

* @return number

*/

function getVerify($type = 1, $length = 4, $width = 200, $height = 40,$codeName = 'verifyCode', $pixel = 100, $line = 0, $arc = 0, $fontfiles = array("fonts/SIMYOU.TTF","fonts/STXINGKA.TTF")) {

$image = imagecreatetruecolor ( $width, $height );

function randColor($image) {

return imagecolorallocate ( $image, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) );

}

$white = imagecolorallocate ( $image, 255, 255, 255 );

imagefilledrectangle ( $image, 0, 0, $width, $height, $white );

switch ($type) {

case 1 :

// 数字

$string = join ( '', array_rand ( range ( 0, 9 ), $length ) );

break;

case 2 :

// 字母

$string = join ( '', array_rand ( array_flip ( array_merge ( range ( 'a', 'z' ), range ( 'A', 'Z' ) ) ), $length ) );

break;

case 3 :

// 数字+字母

$string = join ( '', array_rand ( array_flip ( array_merge ( range ( 'a', 'z' ), range ( 'A', 'Z' ), range ( 0, 9 ) ) ), $length ) );

break;

case 4 :

// 汉字

$str = "时,间,跨,度,发,牢,骚,京,东,方,科,技,实,力,可,见,味,儿,为,了,抗,日,将,领,万,科,进,入,了,口,味,加,入,了,速,递,否,石,佛,思,考,的,房,间,里,看,似,简,单,风,口,浪,尖,遛,弯,儿,破,我,诶,人,品";

$arr = explode ( ',', $str );

$string = join ( '', array_rand ( array_flip ( $arr ), $length ) );

break;

}

// 将验证码存储到SESSION中

session_start ();

$_SESSION [$codeName] = $string;

for($i = 0; $i < $length; $i ++) {

$fontfile = $fontfiles [array_rand ( $fontfiles )];

//mb_string库

$char = mb_substr ( $string, $i, 1, 'utf-8' );

imagettftext ( $image, mt_rand ( 14, 24 ), mt_rand ( - 30, 30 ), 20+ $i*50, mt_rand ( $height -20, $height - 10 ), randColor ( $image ), $fontfile, $char );

}

// 检测是否设置干扰元素

if ($pixel) {

for($i = 1; $i <= $pixel; $i ++) {

imagesetpixel ( $image, mt_rand ( 0, $width ), mt_rand ( 0, $height ), randColor ( $image ) );

}

}

if ($line) {

for($i = 1; $i <= $line; $i ++) {

imageline ( $image, mt_rand ( 0, $width ), mt_rand ( 0, $height ), randColor ( $image ) );

}

}

if ($arc) {

for($i = 1; $i <= $arc; $i ++) {

imagearc ( $image, mt_rand ( 0, $width / 2 ), mt_rand ( 0, $height / 2 ), mt_rand ( 0, $width ), mt_rand ( 0, $height ), mt_rand ( 0, 360 ), mt_rand ( 0, 360 ), randColor ( $image ) );

}

}

header ( 'content-type:image/png' );

imagepng ( $image );

imagedestroy ( $image );

}

?>

一键复制

编辑

Web IDE

原始数据

按行查看

历史

php randomcode 函数,MyRandomCode.php相关推荐

  1. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  2. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

  3. C++ 笔记(34)— C++ exit 函数

    当遇到 main 函数中的 return 语句时,C++ 程序将停止执行.但其他函数结束时,程序并不会停止.程序的控制将返回到函数调用之后的位置.然而,有时候会出现一些非常少见的情况,使得程序有必要在 ...

  4. C++ 笔记(30)— 友元函数与友元类

    我们知道类的私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行.这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦. ...

  5. 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )

    1. foreach 函数 foreach 函数定义如下: $(foreach <var>,<list>,<text>) 函数的功能是:把参数 <list&g ...

  6. 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)

    编写 Makefile 的时候,很多情况下需要对文件名进行操作.例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等. 注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待. 1 ...

  7. Go 学习笔记(65)— Go 中函数参数是传值还是传引用

    Go 语言中,函数参数传递采用是值传递的方式.所谓"值传递",就是将实际参数在内存中的表示逐位拷贝到形式参数中.对于像整型.数组.结构体这类类型,它们的内存表示就是它们自身的数据内 ...

  8. Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法

    函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...

  9. C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明

    带形参的 main 函数,如 int main( int argc, char* argv[], char **env ) 是 UNIX .Linux 以及 Mac OS 操作系统中 C/C++ 的 ...

最新文章

  1. 前端模块化(一):模块化那些事儿
  2. 读取Exchange的用户未读邮件数的几种方法
  3. 解决bbb无法加载uImage问题
  4. 优秀程序员的两大要素:懒 + 笨
  5. 《Java编程思想》Java I/O系统章节阅读笔记
  6. linux添加ssh公钥免密登录
  7. Android 10 重磅来袭:支持 5G 与折叠屏、隐私安全全面升级!
  8. SCJP刷题学习笔记(Part six)
  9. 3D 打印开源软件 cura
  10. Mortal Kombat Tower (dp动态规划)
  11. 如何使用git上传项目至GitHub repository
  12. 单片机c语言任务1——数码显示管0~9
  13. 【云原生系列】云原生下的网络安全如何防御?
  14. 解决Allocate exception for servlet XXXServlet
  15. 测试用例设计——微信发朋友圈(详细)
  16. MAVROS的plugin到底是什么意思?plugin中文意思是插件
  17. linux中dd命令详解,Linux基础知识之dd命令详解
  18. 共轭方式怎么判断_有机化学中共轭体系的类型怎么判断
  19. UIC564-2附录6 –轨道车辆门窗橡胶密封条的阻燃防火测试
  20. 期权到底是什么?为什么说期权是有杠杆的?

热门文章

  1. 0成本涨粉过万详细复盘,新手也可100%实操上手!
  2. 黑鲨3怎么安装鸿蒙系统,黑鲨3 Pro机械按键详解,横握时可进行高频点击操作
  3. 【木头Cocos2d-x 004】HelloWorld倒底怎么玩?
  4. 曾经连过的WiFi密码查询
  5. oracle系统中poord是什么,______A.tiredB.weakC.poorD.slow
  6. 搞一下整车以太网技术 | A1 整车以太网技术概述
  7. 读华为副总裁徐家骏总结的个人心得
  8. java基于Springboot+vue的校园二手闲置商品交易平台系统 element
  9. windows 单机 - elasticsearch-7.11.1 、kibana-7.11.1 安装部署
  10. 使用聚类分析 构建信用卡高风险客户识别模型