国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP防止用戶重復提交表單

zengdongbao / 2824人閱讀

摘要:我們提交表單的時候,不能忽視的一個限制是防止用戶重復提交表單,因為有可能用戶連續點擊了提交按鈕或者是攻擊者惡意提交數據,那么我們在提交數據后的處理如修改或添加數據到數據庫時就會惹上麻煩。我們現在來了解下簡單的利用來防止表單重復提交的方法。

我們提交表單的時候,不能忽視的一個限制是防止用戶重復提交表單,因為有可能用戶連續點擊了提交按鈕或者是攻擊者惡意提交數據,那么我們在提交數據后的處理如修改或添加數據到數據庫時就會惹上麻煩。

那么如何規避這中重復提交表單的現象出現呢?我們可以從很多方面入手:

首先從前端做限制。前端JavaScript在按鈕被點擊一次后禁用,即disabled,這個方法簡單的防止了多次點擊提交按鈕,但是缺點是如果用戶禁用了javascript腳本則失效。

第二,我們可以在提交后做redirect頁面重定向,即提交后跳轉到新的頁面,主要避免F5重復提交,但是也有不足之處。

第三,就是數據庫做唯一索引約束。

第四,就是做session令牌驗證。

我們現在來了解下簡單的利用session token來防止表單重復提交的方法。

我們在表單中加一個input隱藏域,即type="hidden",其value值用來保存token值,當頁面刷新的時候這個token值會變化,提交后判斷token值是否正確,如果前臺提交的token與后臺不匹配,則認為是重復提交。

< ?php
/ PHP簡單利用token防止表單重復提交 */
session_start();
header("Content-Type: text/html;charset=utf-8");
function set_token() {
$_SESSION["token"] = md5(microtime(true));
}
function valid_token() {
$return = $_REQUEST["token"] === $_SESSION["token"] ? true: false;
set_token();
return $return;
}
//如果token為空則生成一個token
if(!isset($_SESSION["token"]) || $_SESSION["token"]=="") {
set_token();
}
if(isset($_POST["web"])){
if(!valid_token()){
echo "token error,請不要重復提交!";
}else{
echo "成功提交,Value:".$_POST["web"];
}
}else{
?>
}
?>

以上是一個簡單的防止重復提交表單的例子。

那么實際項目開發中,會對表單token做更復雜的處理,即我們說的令牌驗證。可能要做的處理 有:驗證來源域,即來路,是否為外部提交;匹配要執行的動作,是添加、修改or刪除;其次最重要的是構建token,token可以采用可逆的加密算法, 盡可能復雜,因為明文還是不安全的。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22736.html

相關文章

  • php表單加入Token防止重復提交

    摘要:下次客戶端提交請求時,會隨著表單一起提交到服務器端。簡單利用防止表單重復提交此處理方法純粹是為了給初學者參考如果為空則生成一個成功提交,提交 Token淺談Token,就是令牌,最大的特點就是隨機性,不可預測。一般黑客或軟件無法猜測出來。那么,Token有什么作用?又是什么原理呢? Token一般用在兩個地方——防止表單重復提交、anti csrf攻擊(跨站點請求偽造)。兩者在原理上都...

    william 評論0 收藏0
  • PHP 防止表單重復提交

    摘要:框架很多框架都有防止重復提交的功能,大家應該都有了解,這里不再贅述。后端也就是使用進行驗證,當然不局限以下幾種用戶提交表單到后端,在中做標記,指定時間內重復提交無效。 導語 說來慚愧,前幾天做項目的時候,出現個低級錯誤。在公司后臺做表單提交,一是自己員工用,二是 html 自己來寫的,沒有驗證表單重復提交,結果出錯了。寫出來記錄下以便提醒自己,時刻不能疏忽。 解決方法 其實方法有很多種...

    wushuiyong 評論0 收藏0
  • php表單提交后再后退 內容則默認清空的解決方法

    摘要:指示對于單個用戶的整個或部分響應消息,不能被共享緩存處理。這允許服務器僅僅描述當用戶的部分響應消息,此響應消息對于其他用戶的請求無效。指示客戶機可以接收生存期不大于指定時間以秒為單位的響應。指示客戶機可以接收超出超時期間的響應消息。 轉載原文地址: http://www.jquerycn.cn/a_14422 在session_start()之后,字符輸出之前加上header(Cac...

    Joyven 評論0 收藏0
  • php表單提交后再后退 內容則默認清空的解決方法

    摘要:指示對于單個用戶的整個或部分響應消息,不能被共享緩存處理。這允許服務器僅僅描述當用戶的部分響應消息,此響應消息對于其他用戶的請求無效。指示客戶機可以接收生存期不大于指定時間以秒為單位的響應。指示客戶機可以接收超出超時期間的響應消息。 轉載原文地址: http://www.jquerycn.cn/a_14422 在session_start()之后,字符輸出之前加上header(Cac...

    hightopo 評論0 收藏0
  • 2018 PHP面試真題(包括詳細解析)

    摘要:以下題目和解析分別來源于我的新書程序員面試筆試寶典程序員面試筆試真題解析。類通過一個簡單的外部接口與外界發生關系,對象與對象之間通過消息進行通信。真題獲得實例化對象所屬類名字的函數是。 以下題目和解析分別來源于我的新書《PHP程序員面試筆試寶典》、《PHP程序員面試筆試真題解析》。 1、PHP常考基礎 1、PHP與ASP、JSP有什么區別?ASP全名Active Server Page...

    pubdreamcc 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<