lavarel之原生验证码使用

因为laravel对header头部作了处理,很多原生图片生成的写法,在laravel都不适用了,需要换种写法

以下这是原生php的写法,在普通php文件中,和tp框架中都可以正常输出验证码

           session_start();
            $tatted_code=dechex(mt_rand(0,15));
            for($i=0;$i<3;$i++){
                $tatted_code.=dechex((mt_rand(0,15)));
            }
            $_SESSION['code']=$tatted_code;
            $width=70;
            $height=25;
            $img=imagecreatetruecolor($width, $height);
            $_white=imagecolorallocate($img,236,251,208);
            
            imagefill($img,0,0,$_white);
            $bg=imagecolorallocate($img,204,204,204);
            imagerectangle($img,0,0,$width-1,$height-1,$bg);
            for($i=0;$i

以上的写法,在laravel中是不适用的,会导致出现一大堆的乱码,原因是laravel对header进行了处理。
以下代码,是laravel5.2中的写法,其他版本也类似

Route::get('verify',function(){
    ob_clean();
    ob_start();
    session_start();
    $tatted_code=dechex(mt_rand(0,15));
    for($i=0;$i<3;$i++){
        $tatted_code.=dechex((mt_rand(0,15)));
    }
    $_SESSION['code']=$tatted_code;
    $width = 70;
    $height = 25;
    $img = imagecreatetruecolor($width, $height);
    $_white = imagecolorallocate($img,236,251,208);
            
    imagefill($img,0,0,$_white);
    $bg = imagecolorallocate($img,204,204,204);
    imagerectangle($img,0,0,$width-1,$height-1,$bg);
    for($i=0;$iheader('Content-Type','image/png');
});

你可能感兴趣的:(lavarel之原生验证码使用)