laravel5.5驗證碼的使用
阿新 • • 發佈:2019-01-07
1.Composer 安裝 Captcha 擴充套件包:
在cmd命令列切換到當前的專案根目錄,執行
composer require mews/captcha
注:Windows中使用該擴充套件包還需要安裝 GD2 擴充套件(在php.ini中取消extension=php_gd2.dll前面的註釋)
注:Windows中使用該擴充套件包還需要安裝 php_fileinfo擴充套件(在php.ini中取消extension=php_fileinfo.dll前面的註釋)
2.使用Captcha服務提供者之前還需要在config/app.php中註冊服務提供者:
在 providers 陣列內追加如下內容
'providers' => [
Mews\Captcha\CaptchaServiceProvider::class,
]
在 aliases 陣列內追加如下內容
'aliases' => [
// ...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]
3.執行
php artisan vendor:publish
然後選擇你需要的資源序號,並回車就好
生成配置檔案 config/captcha.php
4.開啟captcha.php檔案
<?php return [ 'characters' => '2346789abcdefghjmnpqrtuxyzABCDEFGHJMNPQRTUXYZ', 'default' => [ 'length' => 5, 'width' => 120, 'height' => 36, 'quality' => 90, ], 'flat' => [ 'length' => 6, 'width' => 160, 'height' => 46, 'quality' => 90, 'lines' => 6, 'bgImage' => false, 'bgColor' => '#ecf2f4', 'fontColors'=> ['#2c3e50', '#c0392b', '#16a085', '#c0392b', '#8e44ad', '#303f9f', '#f57c00', '#795548'], 'contrast' => -5, ], 'mini' => [ 'length' => 3, 'width' => 60, 'height' => 32, ], 'inverse' => [ 'length' => 5, 'width' => 120, 'height' => 36, 'quality' => 90, 'sensitive' => true, 'angle' => 12, 'sharpen' => 10, 'blur' => 2, 'invert' => true, 'contrast' => -5, ] ];
可以看到這些配置選項都非常通俗易懂,你可以在此修改對應選項自定義驗證碼的長度、背景顏色、文字顏色等屬性,在此不做過多敘述。
至此,此擴充套件包就安裝完成了。
5.給使用者展示驗證碼
擴充套件包提供了兩個函式用於展示驗證碼:
captcha_img() - 返回 img 格式的驗證碼;
captcha_src() - 返回驗證碼的 url 地址。
在你的模板檔案裡(如:register.blade.php)直接呼叫即可:
<div class="form-group code"> <label>驗證碼</label> <input class="tt-text" name="captcha"> {!! captcha_img() !!} </div>
又或者
<div class="form-group code">
<label>驗證碼</label>
<input class="tt-text" name="captcha">
<img src="{{captcha_src()}}" onclick="this.src='{{captcha_src()}}'+Math.random()" title="點選圖片重新獲取驗證碼">
或者
<img src="{{captcha_src('flat')}}" onclick="this.src='{{captcha_src('flat')}}'+Math.random()" title="點選圖片重新獲取驗證碼">
或者
<img src="{{captcha_src('mini')}}" onclick="this.src='{{captcha_src('mini')}}'+Math.random()" title="點選圖片重新獲取驗證碼">
或者
<img src="{{captcha_src('inverse')}}" onclick="this.src='{{captcha_src('inverse')}}'+Math.random()" title="點選圖片重新獲取驗證碼">
</div>
onclick中的連結寫成這樣也可以
this.src='/captcha/flat?'+Math.random()" title="點選圖片重新獲取驗證碼"
flat,可以根據模式不同切換
使用自定義樣式的驗證碼
可以看到當前有4中模式default、flat、mini、inverse按著自己的隨意配置
如果想使用自定義的驗證碼,如上文配置檔案captcha.php裡的 inverse 選項:
return [
...
'default' => [
...
],
'inverse' => [
'length' => 5,
'width' => 120,
'height' => 36,
'quality' => 90,
'sensitive' => true,
'angle' => 12,
'sharpen' => 10,
'blur' => 2,
'invert' => true,
'contrast' => -5,
]
];
例如以下呼叫即可
{!! captcha_img('inverse') !!}
{{captcha_src('inverse')}}
判斷使用者輸入的驗證碼是否正確
擴充套件包使用了 自定義驗證規則 方式擴充套件了驗證規則,我們只要在對應的 Controller 新增以下的規則即可:
$this->validate($request, [
'captcha' => 'required|captcha'
]);