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