PHP - 验证码

效果:

 

函数:

    /**
     * 
     * 函数名:_captbat()
     * 作用:生成验证码
     * 参数:
     *     1:宽度
     *     2:高度
     *     3:验证码个数
     *     4:是否启用边框
     *     5:不填写为默认值
     * 返回值:返回验证码图片
     * 
     * */
    function _captbat($_width = 75,$_height = 25, $_rnd_code = 4,$_flag = false){
        //创建随机码
        for ($i=0;$i<$_rnd_code;$i++) {
            $_nmsg .= dechex(mt_rand(0,15));
        }
        
        //保存在session
        $_SESSION['code'] = $_nmsg;
        
        //创建一张图像
        $_img = imagecreatetruecolor($_width,$_height);
        
        //白色
        $_white = imagecolorallocate($_img,255,255,255);
        
        //填充
        imagefill($_img,0,0,$_white);
        
        if ($_flag) {
            //黑色,边框
            $_black = imagecolorallocate($_img,0,0,0);
            imagerectangle($_img,0,0,$_width-1,$_height-1,$_black);
        }
        
        //随即画出6个线条
        for ($i=0;$i<6;$i++) {
            $_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
            imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height),$_rnd_color);
        }
        
        //随即雪花
        for ($i=0;$i<100;$i++) {
            $_rnd_color = imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
            imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),'*',$_rnd_color);
        }
        
        //输出验证码
        for ($i=0;$i<strlen($_SESSION['code']);$i++) {
            $_rnd_color = imagecolorallocate($_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));
            imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][$i],$_rnd_color);
        }
        
        //输出图像
        header('Content-Type: image/png');
        imagepng($_img);
        
        //销毁
        imagedestroy($_img);
    }

 

posted on 2015-11-12 19:59  ultrastrong  阅读(223)  评论(0)    收藏  举报