1、載入驗證碼類,並驗證 (1)下載定義好的code驗證碼類,放置到resources目錄下 (2) 添加路由 (3)添加方法 LoginController.php 註意: 不要忘記引入Code類,不加‘\’,會引入App\Http\Controllers\Admin\Code 驗證: 2、$_S ...
1、載入驗證碼類,並驗證
(1)下載定義好的code驗證碼類,放置到resources目錄下
(2) 添加路由
Route::get('/admin/code','Admin\LoginController@code');
(3)添加方法 LoginController.php
public function code() { $code = new \Code(); $code->make(); }
註意: 不要忘記引入Code類,不加‘\’,會引入App\Http\Controllers\Admin\Code
require_once 'resources/code/Code.class.php';
驗證:
2、$_SESSION處理 (引入第三方類時)
查看Code類,可以看到其中的get方法,驗證session
public function get() { return $_SESSION['code']; } //生成驗證碼 private function createCode() { $code = ''; for ($i = 0; $i < $this->codeLen; $i++) { $code .= $this->codeStr [mt_rand(0, strlen($this->codeStr) - 1)]; } $this->code = strtoupper($code); $_SESSION['code'] = $this->code; }
(1)添加測試路由
Route::get('/admin/getcode','Admin\LoginController@getcode');
(2)添加方法 LoginController.php
public function getcode() { $code = new \Code(); echo $code->get(); }
驗證:
原因: laravel對session進行封裝,未開啟原始session
修改:
剛剛將server.php重命名為index.php,修改該文件,打開session_start();
1 <?php 2 3 /** 4 * Laravel - A PHP Framework For Web Artisans 5 * 6 * @package Laravel 7 * @author Taylor Otwell <[email protected]> 8 */ 9 10 session_start(); 11 12 $uri = urldecode( 13 parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) 14 ); 15 16 // This file allows us to emulate Apache's "mod_rewrite" functionality from the 17 // built-in PHP web server. This provides a convenient way to test a Laravel 18 // application without having installed a "real" web server software here. 19 if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { 20 return false; 21 } 22 23 require_once __DIR__.'/public/index.php';
刷新
3、將驗證碼引入到登陸頁面
(1)修改login.blade.php
1 <input type="text" class="code" name="code"/> 2 <span><i class="fa fa-check-square-o"></i></span> 3 <img src="{{url('admin/code')}}" alt="">
(2)驗證
http://127.0.0.1/admin/login(此時顯示驗證碼,而點擊驗證碼,並不能更新)
(3)驗證碼刷新功能
添加onclick 事件
<img src="{{url('admin/code')}}" alt="" onclick="this.src='{{url('admin/code')}}'">
如圖可以看到:訪問地址一樣,有的瀏覽器誤以為是一樣的地址,不會再去請求,所以加一個隨機數區分
<img src="{{url('admin/code')}}" alt="" onclick="this.src='{{url('admin/code')}}?'+Math.random()">