PHP使用session防止表單重複提交

2021-08-14 12:21:29 字數 874 閱讀 3345

在測試程式功能的時候,發現表單post資料的時候存在乙個重複提交的問題,而在每個提交頁面都使用驗證碼進行驗證使用者體驗又不太好,查閱網上的資料後發現目前解決這個問題的方法主要有以下幾種:

1、新增js驗證,防止提交重複表單

2、提交後頁面重定向或重新整理

3、提交後,提交按鈕變為不可用

4、加驗證碼

5、表單令牌(session)

前三種方法可以控制普通使用者正常提交,卻無法阻止惡意灌水性質的提交,驗證碼控制有時候影響使用者體驗,在這種情況下只有使用表單令牌了

1、 時間限制(驗證碼)+重定向

前台(不做時間限制的話需要):

如果是對提交做時間限制,前台可以不寫**

<?php

$time=60; //1分鐘

if(isset($_session[『joinintoken』] ))

$encode = time().md5(random(1000,99999).』dvhgr8o4』);

$_session[『joinintoken』]= $encode;

提交完成後立即重定向

//如果有自己的加密函式可以加密和解密可以替換為以下**:

$encode = xxutils::authcode(time().***,『encode』,$salt,$time)

//解密

$tokentime = str_replace(' ','+',$this->getparam('token'));

$tokentime = xxutils::authcode(time().***,『decode』,$salt,$time);

php 使用會話session

cookie 在客戶端上儲存少了資訊 cookie session 會話 解決cookie大小限制 數量 其他 setcookie 設定cookie 在客戶端生成cookie檔案,可以保持 到期時間 名稱 值.setcookie name lee time 7 24 60 60 讀取cookie i...

session 轉移防止丟失

session 轉移防止丟失 現在一般的lb伺服器都有相應的session轉移功能 客戶端存有cookie,服務端同步各自的session,以達到session共享,轉移session不丟失 伺服器session 傳送sessionid給瀏覽器 瀏覽器把sessionid存到cookie中 要求 1...

session 轉移防止丟失

session 轉移防止丟失 現在一般的lb伺服器都有相應的session轉移功能 客戶端存有cookie,服務端同步各自的session,以達到session共享,轉移session不丟失 伺服器session 傳送sessionid給瀏覽器 瀏覽器把sessionid存到cookie中 1,用c...