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' => '验证码有误' ]; }