• php 验证码 ucode


    <?php
    //验证码
    function ucode($length=4,$mode=1,$type='png',$width=48,$height=22) 
    {
        $randval = rand(1000,9999);
        $_SESSION['IMGCODE']= $randval;
    
        $width = ($length*9+10)>$width?$length*9+10:$width;
        if ( $type!='gif' && function_exists('imagecreatetruecolor')) {
            $im = @imagecreatetruecolor($width,$height);
        }else {
            $im = @imagecreate($width,$height);
        }
        $r = Array(225,255,255,223);
        $g = Array(225,236,237,255);
        $b = Array(225,236,166,125);
        $key = mt_rand(0,3);
    
        $backColor = imagecolorallocate($im, $r[$key],$g[$key],$b[$key]);    //背景色(随机)
        $borderColor = imagecolorallocate($im, 100, 100, 100);                    //边框色
        $pointColor = imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));                 //点颜色
    
        @imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backColor);
        @imagerectangle($im, 0, 0, $width-1, $height-1, $borderColor);
        $stringColor = imagecolorallocate($im,mt_rand(0,200),mt_rand(0,120),mt_rand(0,120));
        // 干扰
        for($i=0;$i<10;$i++){
            $fontcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
            imagearc($im,mt_rand(-10,$width),mt_rand(-10,$height),mt_rand(30,300),mt_rand(20,200),55,44,$fontcolor);
        }
        for($i=0;$i<25;$i++){
            $fontcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
            imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pointColor);
        }
    
        @imagestring($im, 5, 5, 3, $randval, $stringColor);
        output($im,$type);
    }
    /**
     * 打印验证码
     *
     * @param unknown_type $im
     * @param unknown_type $type
     */
    function output($im,$type='png') 
    {
        header("Content-type: image/".$type);
        $ImageFun='Image'.$type;
        $ImageFun($im);
        imagedestroy($im);  
    }

    直接执行ucode()会产生一个img标签显示在页面上

    结果:

  • 相关阅读:
    【编程开发】加密算法(MD5,RSA,DES)的解析
    【spring-quartz】 定时调度,时间设置
    IntelliJ IDEA 学习(六)内存设置
    Java中的Double类型计算
    货币金额的计算
    关系数据库设计三大范式【转】
    【服务器防护】WEB防护
    遮罩、警告框/弹框
    Java 中使用 UEditor 整理【待续。。。】
    order by 容易出现的bug记录
  • 原文地址:https://www.cnblogs.com/wuheping/p/2971619.html
Copyright © 2020-2023  润新知