var flag= 0
如果flag=0 就让提交
在提交后,数据没有返回来前,将flag=1
数据返回来后再设置成0
这样就能防止重复提交。非常有效。
在客户端那边去做限制,在最后一个请求没响应回来之前不能发起另外的请求。
a、提交事件触发后, 禁用控件,不让客户提交
b、设置一变量作为标识,如果是0就接受提交,如果是1就不接受. 每次提交的时候设为1,服务端响应之后设为0
服务端,
1在数据库层面防止重复数据写入
2使用 RateLimit 定义规定时间内同一操作不能超过几次,
3采用队列写入
4每次提交都需要申请一个 token ,每个 token 只能用一次
1、用 javascript 设置一个变量,只允许提交一次;参考如下:
<script type="text/javascript">
var checkSubmitFlg = false
function checkSubmit(){
if (checkSubmitFlg == true){
return false
}
checkSubmitFlg = true
return true
}
document.ondblclick =
function docondblclick(){
window.event.returnValue = false
}
document.onclick =
function doconclick(){
if (checkSubmitFlg){
window.event.returnValue = false
}
}
</script>
<form action="action.php" method="post" onsubmit="return checkSubmit()">
用 javascript 将提交按钮或者 img 置为 disable;
参考如下:
<form action="action.php" method="post" onsubmit="getElById('submitInput').disabled = truereturn true">
<img styleId="submitInput" src="images/ok_b.gif" border="0" />
</form>