經過摸索,終於能在laravel 5.1中應用驗證碼了。
因為英語渣五水平,所以幾乎沒搜尋到什麼有用的,於是考慮在github上搜尋驗證碼包!
提示: github上的package中往往會有使用說明,照著上面的實現,一般都能做出來。
我使用的是mews captcha
git 上的地址: https://github.com/mewebstudio/captcha 上面的使用很詳細了。
動手實現:
-- 手動進入 laravel 項目目錄
-- 在對應目錄下,找到composer.json檔案,開啟它,添加如下語句:
添加語句
{ "require": { .... .... .... "mews/captcha": "~2.0" }, "minimum-stability": "dev"}
-- 執行composer update, 如果報錯,請先執行composer self-update, 然後再執行 composer update
-- 找到config/app.php開啟,添加如下語句:
1.開啟這個檔案,找到providers項,添加如下語句
Mews\Captcha\CaptchaServiceProvider::class,
2.找到aliases項,添加如下語句:
添加語句:
'Captcha' => Mews\Captcha\Facades\Captcha::class,
-- cmd視窗中執行 php artisan vendor:publish
通過上面的所有步驟,查看目錄,你會發現在vendor下多了mews目錄,並且你可以使用命名空間 use Captcha, 在config/captcha.php中存在一個驗證碼的設定檔captcha.php。
-- 上面的所有步驟在 https://github.com/mewebstudio/captcha 中同樣存在!
我們來看一看新增的vendor/mews目錄
我們找到vendor/mews/captcha/src/captcha.php
尋找public 方法, 發現:
public function create($var) --- 產生驗證碼
public function check($var) --- 判斷輸入和驗證碼是否相等
public function src($var) --- 輸出img屬性src的連結
public function img($var) --- 輸出img標籤
-- 其中,$var 參數就是,config/captcha.php 中 對應的鍵,分別可以是:
default, flat, mini, inverse 代表了四種風格的驗證碼!可以針對不同風格進行配置,直接在config/captcha.php中修改配置項
-- 執行個體:
1.在app/Http/routes.php中配置路由
其中captcha/test, 表示測試路徑, 映射 CaptchaController 下的 public function index() {}
captcha/mews 映射驗證碼的輸出,映射 CaptchaController 下的 public function mews() {}
2.建立控制器
在cmd視窗中,直接輸入
php artisan make:controller CaptchaController --plain
如果提示成功,則說明在 app/Http/Controllers/ 下產生了新檔案 CaptchaController.php
3.在app/Http/Controllers/CaptchaController.php中建立index() 和 mews() 方法
4.建立視圖
在resources/views/目錄下建立captcha目錄,分別建立index.blade.php 並且大概做個布局和樣式調整
Learn Laravel 5.1 該頁面僅僅用來學習驗證碼
mews
@if(count($errors) > 0)
@foreach($errors->all() as $error)
- {{ $error }}
@endforeach
@endif ©2015 ZellDincht
這時候輸入:http://your-host/captcha/test 查看
這是我的布局和captcha
5. 添加路由到app/Http/routes.php
我通過post提交到後台進行測試
6.在TestController中cpt方法如下:
'required|captcha' ]; $messages = [ 'cpt.required' => '請輸入驗證碼', 'cpt.captcha' => '驗證碼錯誤,請重試' ]; //如果僅僅驗證captcha的值可以 //採用 Captcha::check(Input::get('cpt')); //返回bool $validator = Validator::make(Input::all(), $rules, $messages); if($validator->fails()) { return Redirect::back()->withErrors($validator); } else { return "驗證碼OK!"; } }}
以上,測試如下,
驗證錯誤:
驗證正確:
這裡沒有採用使用Captcha::check()的方式,具體情況具體分析吧。