博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php验证码类
阅读量:6163 次
发布时间:2019-06-21

本文共 1788 字,大约阅读时间需要 5 分钟。

hot3.png

    function verifyImage($width=78, $height=26, $type=1, $len=4, $sessName='verify', $lines=4, $pixels=30)
    {
        session_start();        //开启session
        $image = imagecreatetruecolor($width, $height);            //创建画布
        $bg = imagecolorallocate($image, 255, 255, 255);        //背景色
        imagefilledrectangle($image, 1, 1, $width - 2, $height - 2, $bg);        //画布填充
        $str = '';
        for($i = 0; $i < $len; $i++)            //获取验证码
        {
            switch ($type) {
                case 1:
                    $str .= range(0, 9)[mt_rand(0, count(range(0, 9)) - 1)];
                    break;
                case 1:
                    $str .= rand(0, 1) ? range(0, 9)[mt_rand(0, count(range(0, 9)) - 1)] : range('a', 'z')[mt_rand(0, count(range('a', 'z')) - 1)];
                    break;
                default:
                    break;
            }
        }
        $_SESSION[$sessName] = $str;            //写入session
        $fontfiles = array('msyh.ttf', 'msyhbd.ttf');
        for($i = 0; $i < $len; $i++)            //画布写入验证码
        {
            $size = mt_rand(14, 20);            //字体规格
            $angle = mt_rand(-30, 30);            //角度
            $x = mt_rand(4, 8) + $i * $size;    //x坐标
            $y = mt_rand($height - 8, $height - 4);    //y坐标
            $color = imagecolorallocate($image, mt_rand(20, 180), mt_rand(40, 200), mt_rand(60, 220));    //字体色
            $text = substr($str, $i, 1);        //字
            $fontfile = $fontfiles[mt_rand(0, count($fontfiles) - 1)];    //字体
            imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
        }
        if($lines)                                //干扰线
        {
            for($i = 0; $i < $lines; $i++)
            {
                $color = imagecolorallocate($image, mt_rand(20, 180), mt_rand(40, 200), mt_rand(60, 220));
                imageline($image, mt_rand(0, $width - 1), mt_rand(0, $height - 1), mt_rand(0, $width - 1), mt_rand(0, $height - 1), $color);
            }
        }
        if($pixels)                                //干扰点
        {
            for($i = 0; $i < $pixels; $i++)
            {
                $color = imagecolorallocate($image, mt_rand(20, 180), mt_rand(40, 200), mt_rand(60, 220));
                imagesetpixel($image, mt_rand(0, $width - 1), mt_rand(0, $height - 1), $color);
            }
        }
        header('Content-type:image/gif');
        imagegif($image);
        imagedestroy($image);
    }

转载于:https://my.oschina.net/u/1468096/blog/298585

你可能感兴趣的文章
java注解【转】
查看>>
centos 下安装g++
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
STM32启动过程--启动文件--分析
查看>>