在測試程式功能的時候,發現表單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...