少し調べた結果、最終的にlaravel 5.1で確認コードを適用できるようになりました。
私は英語力が 5 級なので、役に立つものはほとんど見つからなかったので、github で確認コード パッケージを検索しようと考えました。
ヒント: github 上のパッケージに使用方法が記載されている場合が多いですが、通常は上記の実装に従って作成できます。
私は mews captcha を使用しています
git のアドレス: https://github.com/mewebstudio/captcha 上記の使用法は非常に詳細です。
ハンズオン実装:
-- laravel プロジェクト ディレクトリに手動で入力します
-- 対応するディレクトリで、composer.json ファイルを見つけますそれを開き、次のステートメントを追加します:
図に示すように: ステートメントを追加します
{ "require": { .... .... .... "mews/captcha": "~2.0" }, "minimum-stability": "dev"}
--コンポーザーの更新を実行しますエラーが報告された場合は、最初に -update を実行してから、composer update
を実行してください。config/app.php を見つけて開き、次のステートメントを追加します。
1. このファイルを開き、プロバイダー項目を見つけて次のステートメントを追加します
Mews\Captcha\CaptchaServiceProvider::class,
2. エイリアス項目を見つけて追加します次のステートメント:
ステートメントを追加:
'Captcha' => Mews\Captcha\Facades\Captcha::class,
--php 職人のベンダーを実行:publish
上記の手順をすべて実行し、ディレクトリを表示します。cmd ウィンドウに、vendor の下に追加の mews ディレクトリがあり、Captcha を使用して名前空間を使用できることがわかります。 php は config/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 パラメータ.php 内の対応するキーは次のとおりです:
default、 flat、mini、inverse。これらは 4 つのスタイルの検証コードを表します。さまざまなスタイルに合わせて設定できます。config/captcha.php
で直接設定項目を変更します。例:
1. app/Http/routes.php
でルーティングを設定します。
captcha/test (テスト パスを表す) は、CaptchaController の下にパブリック関数 Index() をマッピングします。 {}
captcha/mews は、検証コードの出力をマッピングし、パブリック関数をマッピングしますCaptchaController mews() の下の関数 {}
2. コントローラーを作成します
cmd ウィンドウで、
php artisan make:controller CaptchaController --plain
と直接入力します。成功した場合は、新しいファイル CaptchaController.php が app/Http/Controllers/
に生成されたことを示します。3. app/Http/Controllers/CaptchaController.php に新しいindex() メソッドと mews() メソッドを作成します。 🎜>
<?phpnamespace App\Http\Controllers;use App\Http\Requests;use App\Http\Controllers\Controller;use Illuminate\Http\Request;//引用对应的命名空间use Session;use Captcha;class CaptchaController extends Controller { /** * 测试页面 */ public function index() { // $mews = Captcha::src('inverse');, compact('mews') return view('captcha.index'); } /*创建验证码*/ public function mews() { return Captcha::create('default'); }}
4. ビューを作成します
resources/views/ ディレクトリに captcha ディレクトリを作成し、それぞれ新しい Index.blade.php を作成し、レイアウトを作成しますスタイルの調整
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Learn Laravel 5.1</title> <link href="{{ asset('/css/app.css') }}" rel="stylesheet"> <!-- Fonts --> <link href='//fonts.useso.com/css?family=Roboto:400,300' rel='stylesheet' type='text/css'> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--></head><body> <h2>该页面仅仅用来学习验证码</h2> <h3>mews</h3> @if(count($errors) > 0) <div class="alert alert-danger"> <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ url('test/cpt') }}" method="post"> <input type="hidden" value="POST" name="_method"><!-- --><input type="hidden" value="{{ csrf_token() }}" name="_token" /><!-- --><input type="text" name="cpt" value="" /><!-- --><img src="{{ url('captcha/mews') }}" onclick="this.src='{{ url('captcha/mews') }}?r='+Math.random();" alt=""><!-- --><input type="submit" value="Submit" /> </form> <div id="footer" style="text-align: center; border-top: dashed 3px #eeeeee; margin: 50px 0; padding: 20px;"> ©2015 <a href="http://www.cnblogs.com/Zell-Dinch/">ZellDincht</a> </div> <!-- Scripts --> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script></body></html>
この時点で次のように入力します: http://your-host/captcha/test 表示
これは私のものですレイアウトとキャプチャ
5. app/Http/routes.php にルーティングを追加します
ポストを通じてテストするためにバックグラウンドに送信します
6 TestController の cpt メソッドは次のとおりです:
<?phpnamespace App\Http\Controllers\Test;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;use Input, Validator, Redirect, Session, Captcha;class TestController extends Controller{ public function cpt(Request $request) { // dd(Input::get('cpt')); $rules = [ "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() を使用するメソッドは使用しません。具体的な状況を詳しく分析してみましょう。