一:验证码依赖安装与配置
- 在https://packagist.org/搜索关键字captcha,找第二个,最新版本要求php版本7.2以上才支持
- 向下找可以看到两种安装方式,任选其一,这里使用第二种。
- 需要去php.ini里开启GD库,同时开启php_fileinfo.dll和php_mbstring.dll
- 去config/app.php下配置provider文件
'providers' => [
// ...
Mews\Captcha\CaptchaServiceProvider::class,
]
- 同时去配置别名
'aliases' => [
// ...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]
- 使用
php artisan vendor:publish
命令发布一下,才会出现相关文件。
二:展示验证码
这里沿用了之前自动验证的案例代码
路由:
Route::match(['get','post'],'index5', 'Home\IndexController@index5');
Controller:
//自动验证
public function index5(Request $request){
if(Input::method()=="GET"){
//展示视图
return view('Home/test/index5');
}else{
//自动验证
$this -> validate($request,[
//具体规则 字符 => 验证规则1 | 验证规则2
//验证用户名不为空,且长度大于6小于18
'username' => 'required|min:6|max:18',
//验证年龄不能为空,且年龄大于16小于90,必须为整数
'age' => 'required|min:16|max:90|Integer',
//验证密码不为空,且长度大于6小于21
'password' => 'required|min:6|max:21'
]);
}
}
视图:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors -> all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
<form action="" method="post">
<p>账号:<input type="text" name="username"/></p>
<p>密码:<input type="text" name="password"/></p>
<p>年龄:<input type="text" name="age"/></p>
<p>验证码:<input type="text" name="captcha"/><img src="{{captcha_src()}}"/></p>
{{csrf_field()}}
<input type="submit" name=""><br/>
</form>
</body>
</html>
浏览器访问:
当然也可以去config/captcha.php中修改验证码的默认样式
三:后台校验验证码
Controller修改:
//自动验证
public function index5(Request $request){
if(Input::method()=="GET"){
//展示视图
return view('Home/test/index5');
}else{
//自动验证
$this -> validate($request,[
//具体规则 字符 => 验证规则1 | 验证规则2
//验证用户名不为空,且长度大于6小于18
'username' => 'required|min:6|max:18',
//验证年龄不能为空,且年龄大于16小于90,必须为整数
'age' => 'required|min:16|max:90|Integer',
//验证密码不为空,且长度大于6小于21
'password' => 'required|min:6|max:21',
//验证验证码
'captcha' => 'required|captcha'
]);
}
}
考虑到输出的提示是英文,可以到\resources\lang\zh-CN\validation.php
中进行修改
浏览器访问测试: