zend form 防止重複提交

2021-06-09 22:49:18 字數 1235 閱讀 7548

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同時確認收貨時候,先到先...