1.平時做后台登陸的時候一般情況都少不了驗證碼的功能自己開發很費時間所以今天提供一個第三方的擴展包
首先提供擴展包地址:點我
2.composer安裝:
composer require gregwar/captcha
3.為了方便這里只演示一下功能:
- 路由
Route::get('/captchaShow', 'CaptController@captchaShow');
Route::post('/checkCapt', 'CaptController@checkCapt');
- 控制器代碼
namespace App\Http\Controllers;
use Gregwar\Captcha\CaptchaBuilder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class CaptController extends Controller
{
//生成圖片與驗證碼
public function captchaShow()
{
//生成驗證碼圖片的Builder對象,配置相應屬性
$builder = new CaptchaBuilder();
// 設置背景顏色
$builder = new CaptchaBuilder();
// 設置背景顏色
$builder->setBackgroundColor(220, 210, 230);
$builder->setMaxAngle(25);
$builder->setMaxBehindLines(0);
$builder->setMaxFrontLines(0);
//可以設置圖片寬高及字體
$builder->build($width = 100, $height = 50, $font = null);
//獲取驗證碼的內容,並轉化為小寫
$phrase = strtolower($builder->getPhrase());
//把內容存入session
// session(['phrase' => $phrase]);
Session::put('phrase', $phrase);
//生成圖片
header("Cache-Control: no-cache, must-revalidate");
header('Content-Type: image/jpeg');
$builder->output();
}
public function checkCapt(Request $request)
{
$data = $request->except('_token');
// dd(Session::get('phrase')) ;
// die();
if (strtolower(Session::get('phrase')) ==strtolower( $data['captcha'])) {
Session::forget('phrase');
return '驗證碼正確';
} else {
//用戶輸入驗證碼錯誤
return '驗證碼輸入錯誤';
}
}
}
- 視圖層代碼
<form method="post" action="{{url('/checkCapt')}}" class="layui-form">
{{csrf_field()}}
<input name="captcha" lay-verify="required" type="text" class="layui-input" placeholder="驗證碼" style="width:200px">
<img src="{{url('/captchaShow')}}" onclick="this.src='/captchaShow?'+Math.random()" alt="" style="margin-left: 213px;
margin-top: -68px;cursor: pointer">
<hr class="hr15">
<input value="登錄" lay-submit lay-filter="login" style="width:100%;" type="submit">
<hr class="hr20">
</form>
4.由於演示結果如圖所示(我由於懶得寫前端代碼所以用了X-admin提供的后台模板 "驗證示例")