如何實現php登陸表單提交CSRF及驗證碼
導語:通過下面教程的學習,大家可以掌握如何實現php登陸表單提交CSRF及驗證碼,具體詳情請閱讀以下內容,更多教程請關注應屆畢業生考試網。
1、表單提交,並將其提交到本頁
(1) form 屬性method爲post方法,修改路由,使其接收post、get的請求
Route::any('/admin/login','AdminLoginController@login');
(2)
修改login方法,根據不同的請求返回不同的內容
如果請求方法爲get ,返回登陸頁面;如果請求爲post,就行驗證
use IlluminateSupportFacadesInput;
public function login()
{
if($input = Input::all()){
dd($input);
}else {
return view('n');
}
}
刷新頁面,如果返回如下
這是laravel csrf保護,解決:
正確顯示:
2、確認驗證碼是否正確
(1),修改login()方法
public function login()
{
if($input = Input::all()){
$code = new Code();
$_code = $code->get();
if(strtoupper($input['code'])!=$_code){
//strtoupper()函數將輸入的字母轉化爲大寫字母,否則小寫也是屬於不正確
//back()函數返回上一請求頁面,使用with將提示信息帶回,信息存到session中
return back()->with('msg','驗證碼錯誤');
}else{
echo 'ok';
}
}else {
return view('n');
}
}
(2)修改,獲取session
將之前的用戶名錯誤修改爲:
@if(session('msg'))
<p style="color:red">{{session('msg')}}</p>
@endif
驗證:
問題總結:
1、如果有需要用到session傳參的`地方,路由必須寫在中間件裏面
比如在控制器使用back()函數的時候return back()->with('msg','驗證碼錯誤');,如果路由不是在中間件,沒有session,即使你在入口session_start(),也沒有用,又不好調試;還有就是不會產生csrf的_token
Route::group(['middleware' => ['web']], function () {
//路由要放中間件裏面,否則會生成不了session
Route::any('/admin/login','AdminLoginController@login');//這裏需要接受post傳參,所以必須用混合路由
Route::get('/admin/code','AdminLoginController@code');
Route::get('/admin/getcode','AdminLoginController@getcode');
});
2、引入第三方類的時候,如果此類文件有用到session,那麼需要在入口文件session_start(),這是最簡單的解決方式了,否則會報不認識$_SESSION
相關文章
-
如何讓php提交form表單
PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。下面是小編爲大家搜索整理的如何讓php提交form表單,希望大家能有所收穫,更多精彩內容請及時關注我們應屆畢業生考試網 -
講解如何讓php提交form表單
處理GET請求實現的功能是輸入姓名後頁面顯示“Hello XXX”創建html文件:* Created by PhpStorm.* User: Administrator* Date: 2015/6/30* Time: 15:03*/header("Content-type: text/html; charset=utf-8");if(isset($ -
php如何實現驗證碼
驗證碼在表單實現越來越多了,但是用js的寫的驗證碼,總覺得不方便,所以學習了下php實現的驗證碼。好吧,其實是沒有事情幹,但是又不想浪費時間,所以學習了下php實現驗證碼。正所謂,技多不壓身。而且,也可以封裝成一個函數,以後使 -
php如何使用fgetcsv讀取csv文件出現亂碼
在使用fgetcsv讀取csv文件時,不少朋友反映會出現亂碼的現象。下面小編爲大家整理了php使用fgetcsv讀取csv文件出現亂碼的解決方法,希望能幫到大家!一般來說在php中碰到亂碼多半是編碼問題,在這裏我們實例分析了fgetcsv讀 -
如何真正解決表單重複提交問題php代碼
過去一切時代的精華盡在書中。以下是小編爲大家搜索整理的如何真正解決表單重複提交問題php代碼,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!以前用的js表單防止重複提交方法代碼如下<script t -
PHP中如何實現crontab代碼
PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。下面,小編爲大家搜索整理了PHP中如何實現crontab代碼,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢 -
ThinkPHP表單自動提交驗證實例教程
文章主要介紹了ThinkPHP表單自動提交驗證實例教程,非常有實用價值,需要的朋友可以參考下。本文以實例講述了ThinkPHP表單自動提交驗證的實現過程,詳細步驟如下所示: 一、模板部分:<!DOCTYPE HTML PUBLIC "-//W3C//DTD -
如何實現PHP獲取表單數據與HTML嵌入PHP腳本
導語:如何實現PHP獲取表單數據與HTML嵌入PHP腳本,下面是小編給大家提供的操作講解,大家可以參考閱讀,更多詳情請關注應屆畢業生考試網。常用的自動全局變量如下所示: 1、GET方式功能:獲取get方式提交的數據格式:$_GET[for -
如何在PHP中處理Protocol Buffers數據
Protocol Buffers是Google定義的一種跨語言、跨平臺、可擴展的數據傳輸及存儲的協議,因爲將字段協議分別放在傳輸兩端,傳輸數據中只包含數據本身,不需要包含字段說明,所以傳輸數據量小,解析效率高。如何在PHP中處理Protoco -
PHP提交from表單的方法
PHP獨特的語法混合了C、Java、Perl以及PHP自創的.語法。它可以比CGI或者Perl更快速地執行動態網頁。下面是小編爲大家搜索整理的PHP提交from表單的方法,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考