zoukankan      html  css  js  c++  java
  • 封装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;
    }

    可生成指定位数的数字型、字母型、混合型验证码。

  • 相关阅读:
    【转】winrar命令行详解
    【转】关于色彩空间sRGB和Adobe RGB...
    深入解读TPC-C指标
    解决因 RsFX devicer 而无法卸载 SQL Server 的问题
    LUHN算法
    信用卡卡号编排的含义
    关于第三方API调用的工具 WebApiClient.JIT 的使用记录
    ocelot.json模板
    C#进阶之事件与委托(Event&Delegate)
    C#进阶之面向对象(OOP)
  • 原文地址:https://www.cnblogs.com/splendid/p/10388683.html
Copyright © 2011-2022 走看看