zend form ,我們常用它的表單檢查和大規模建立表單操作,但是好像它並沒有給出防止表單重複提交的方案,除了在頁面上做指令碼(js)鎖定操作的方案外,我們還要在伺服器端做更加安全的檢查。
下面介紹一下我的方案:
利用session(或快取)和form token來防止表單的重複提交。核心是乙個表單基類和乙個validator。
表單基類:
<?php
/** * 表單基類,負責新增表單令牌。
* @author ju *
*/ private function gettokenval()
public function gettoken()
/*** 返回令牌錯誤,包裝msg方法,方便使用
* @return string
*/public function gettokenerror()
}
外掛程式:
<?php
/** * 維護表單提交的token佇列
* @author ju *
*/ /**
* 從session中獲取token佇列
* enter description here ...
*/private function _gettokenlist()
/*** 將佇列放入session
* enter description here ...
* @param array $tokenlist
*/private function _settokenlist($tokenlist=null)
$this->_sessiontokenlst->tokenlist = $tokenlist; }
/*** 檢查token
* enter description here ...
* @param string $token
* @return boolean
*/public function check($token)else }
/* (non-phpdoc)
* @see zend_validate_inte***ce::isvalid()
*/public function isvalid($value)
}
使用的時候,表單要繼承基類,並呼叫父類 的初始化方法。然後再isvalid就ok了。
防止重複提交
在jsp頁面的form中,新增 然後在提交的action類中 suppresswarnings unchecked scope prototype controller results parentpackage default interceptorrefs value interceptorre...
防止重複提交
過濾器 repeatable 過濾器 構建可重複讀取inputstream的request submit註解 package com.medaxis.config.interceptor.annotation import j a.lang.annotation.自定義註解防止表單重複提交 inhe...
後端介面防止重複提交 確認收貨防止重複提交
1 在呼叫介面時候肯定會出現ab同事請求介面的問題,當時我在做訂單確認收貨時候就遇到了這種問題,所以我的解決辦法是加上鎖來解決,在這裡我選擇用lock 裡的reentrantlock 在使用者請求方法時候,獲取到使用者id,放入lock,這也同乙個介面如果是2個相同使用者ab同時確認收貨時候,先到先...