溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何防止表單重復提交

發布時間:2020-06-18 16:00:06 來源:億速云 閱讀:337 作者:元一 欄目:編程語言

Token

就是令牌,最大的特點就是隨機性,不可預測。

Token一般用在兩個地方——防止表單重復提交、anti csrf攻擊(跨站點請求偽造)。

兩者在原理上都是通過session token來實現的。當客戶端請求頁面時,服務器會生成一個隨機數Token,并且將Token放置到session當中,然后將Token發給客戶端(一般通過構造hidden表單)。下次客戶端提交請求時,Token會隨著表單一起提交到服務器端。

如果應用于“防止表單重復提交”,服務器端第一次驗證相同過后,會將session中的Token值更新下,若用戶重復提交,第二次的驗證判斷將失敗,因為用戶提交的表單中的Token沒變,但服務器端session中Token已經改變了。

表單在網頁中主要負責數據采集功能。一個表單有三個基本組成部分: 表單標簽:這里面包含了處理表單數據所用CGI程序的URL以及數據提交到服務器的方法。 表單域:包含了文本框、密碼框、隱藏域、多行文本框、復選框、單選框、下拉選擇框和文件上傳框等。 表單按鈕:包括提交按鈕、復位按鈕和一般按鈕;用于將數據傳送到服務器上的CGI腳本或者取消輸入,還可以用表單按鈕來控制其他定義了處理腳本的處理工作。

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

原理在于生成一個隨機字符串放在session里,提交表單后來驗證這個字符串,可以做到防止他人自己寫form來欺騙提交,重復提交或者雙擊提交。

簡單實現(僅供參考):

<?php
/*
* PHP簡單利用token防止表單重復提交

* 此處理方法純粹是為了給初學者參考
*/

session_start();

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['test'])){

  if(!valid_token()){

    echo "token error";

  }else{

    echo '成功提交,Value:'.$_POST['test'];

  }

}

?>

<form method="post" action="">

  <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>">

  <input type="text" name="test" value="Default">

  <input type="submit" value="提交" />

</form>

以上就是php防止表單重復提交的方法的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女