• 技术文章 >后端开发 >php教程

    PHP生成指定位数验证码与可控干扰元素第二篇

    不言不言2018-04-20 14:59:01原创791
    这篇文章介绍的内容是关于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<$length;$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<$pixel;$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<$line;$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生成指定位数验证码与可控干扰元素第二篇的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 可控 验证
    上一篇:PHP生成指定位数验证码与可控干扰元素 下一篇:php 时间函数strtotime 使用详解
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 整理总结nginx、php-fpm和mysql等的权限划分• php析构函数的简单使用说明_PHP• php准确计算复活节日期的方法_PHP• php json转换成数组形式代码分享_PHP• PHP+jQuery 注册模块开发详解_PHP
    1/1

    PHP中文网