php圖形驗證碼
阿新 • • 發佈:2021-12-30
製作驗證碼圖片
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' => '驗證碼有誤' ]; }