php图形验证码

制作验证码图片

public function makeCode()
    {
        $string = "abcdefghijklmnopqrstuvwxyz0123456789";
        $str = "";
        for($i=0;$i<4;$i++){ // 个数
            $pos = rand(0,35);
            $str .= $string{$pos};
        }
        Session::put('img_number',$str);
        $img_handle = Imagecreate(80, 40);  // 图片大小80X20
        $back_color = ImageColorAllocate($img_handle, 255, 255, 255); // 背景颜色(白色)
        $txt_color = ImageColorAllocate($img_handle, 0,0, 0);  //文本颜色(黑色)

        // 加入干扰线
        for($i=0;$i<3;$i++)
        {
            $line = ImageColorAllocate($img_handle,rand(0,255),rand(0,255),rand(0,255));
            Imageline($img_handle, rand(0,15), rand(0,15), rand(100,150),rand(10,50), $line);
        }

        Imagefill($img_handle, 0, 0, $back_color); // 填充图片背景色
        ImageString($img_handle, 38, 30, 10, $str, $txt_color); // 水平填充一行字符串

        ob_clean();   // ob_clean()清空输出缓存区
        header("Content-type: image/png"); // 生成验证码图片
        Imagepng($img_handle); // 显示图片
    }

html页面调用

<div  class="inline " >
     <label>验证码:</label>
     <input class="control" type="text" name="makeCode" id="makeCode"  >
     <img src="/contractor/makeCode" id="codeImg" title="点击图片刷新" onclick="reCode()" style="width: 80px;" >
</div>

验证码刷新,使用onclick事件

// 点击刷新验证码
function reCode() {
    document.getElementById("codeImg").src="/contractor/makeCode?"+Math.random();
}

后台验证通过

// 验证码图片验证
            if ($request->input(['makeCode'])==Session::get('img_number'))
            {return [
                    'code' => 200
                ];
            }else {
                return [
                    'code' => 0,
                    'msg' => '验证码有误'
                ];
            }

 

posted @ 2021-12-30 14:46  柠七。  阅读(259)  评论(0)    收藏  举报