1. 程式人生 > >laravel5.5驗證碼的使用

laravel5.5驗證碼的使用

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'
]);