用戶登錄註冊,無論前臺後臺,爲了安全性仍是須要加入手機短信或圖形驗證碼的,這樣安全性會好不少php
由於不一樣的需求,咱們能夠返回圖片、網址、HTML,根據前端需求來返回相應的數據html
github地址:github.com/mewebstudio…前端
composer require mews/captcha
複製代碼
找到config/app.php下的providers,添加以下代碼
git
\Mews\Captcha\CaptchaServiceProvider::class,
複製代碼
找到config/app.php下的aliases``,添加以下代碼
github
'Captcha' => Mews\Captcha\Facades\Captcha::class,
複製代碼
引入配置文件,選擇相應的包web
php artisan vendor:publish
複製代碼
則生成config/captcha.php安全
配置文件中的代碼:例如長寬,flat配置等,我的以爲使用默認配置吧,也沒什麼問題。bash
captcha_src();
Captcha::src();
複製代碼
captcha_img();
Captcha::img();
複製代碼
captcha_img('flat');
Captcha::img('inverse');
複製代碼
Route::any('captcha-test', function()
{
if (Request::getMethod() == 'POST')
{
$rules = ['captcha' => 'required|captcha'];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
echo '<p style="color: #ff0000;">Incorrect!</p>';
}
else
{
echo '<p style="color: #00ff30;">Matched :)</p>';
}
}
$form = '<form method="post" action="captcha-test">';
$form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
$form .= '<p>' . captcha_img() . '</p>';
$form .= '<p><input type="text" name="captcha"></p>';
$form .= '<p><button type="submit" name="check">Check</button></p>';
$form .= '</form>';
return $form;
});
複製代碼
路由:get爲獲取圖片驗證碼,post爲驗證驗證碼是否正確app
Route::get('/captcha', 'AllController@captcha');
Route::post('/captcha/validate', 'AllController@captchaValidate');
複製代碼
控制器中的方法:獲取圖片驗證碼返回的是url,若是想返回img標籤或者html,請看上面的方法composer
public function captcha()
{
$captcha['url'] = captcha_src();
return $this->responseData($captcha);
}
複製代碼
前端把驗證碼傳過來進行驗證
public function captchaValidate(Request $request)
{
$rules = ['captcha' => 'required|captcha'];
$validator = \Validator::make($request->all(), $rules);
if ($validator->fails()){
return $this->responseFailed('驗證失敗');
} else {
return $this->responseSuccess('驗證成功');
}
}
複製代碼
若是一直返回驗證失敗,則須要在app/Http/Kernel.php中的$middleware加入如下信息
\Illuminate\Session\Middleware\StartSession::class
複製代碼
獲取以下驗證碼 d6qfe
驗證驗證碼是否正確