手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >js防止表单重复提交实现代码
js防止表单重复提交实现代码
摘要:基于令牌的处理就是一劳永逸的方法。复制代码代码如下:functionformsubmit(){Today=newDate();varNowH...

基于令牌的处理就是一劳永逸的方法。

复制代码 代码如下:

<script Language='JavaScript'>

function formsubmit() {

Today = new Date();

var NowHour = Today.getHours();

var NowMinute = Today.getMinutes();

var NowSecond = Today.getSeconds();

var mysec = (NowHour*3600)+(NowMinute*60)+NowSecond;

if((mysec-document.formsubmitf.mypretime.value)>600){

//600只是一个时间值,就是5分钟内禁止重复提交,值随便设

document.formsubmitf.mypretime.value=mysec;

}

else{

alert(' 按一次就够了,请勿重复提交!请耐心等待!谢谢合作!');

return false;

}

document.forms.formsubmitf.submit();

}

</script>

防止网页后退–禁止缓存

通过控制浏览器的缓存及页面的有效期,当在重定向之后的新页面上点击浏览器后退按钮时,会提示”网页已过期”,从而防止后退时导致表单被提交。但这种方式不是对所有浏览器都是有效的,所以要考虑后再使用。在response时在header中添加如下代码来控制浏览器的缓存及网页的有效期限或直接在网页的<meta>中添加:

复制代码 代码如下:

<?php

//.....

///在IE 4或5中,Cache-Control标记将被忽略,不起作用

header('Cache-Control: no-cache');

header('Expires: 0');

//对于https有效,与“Expires: -1”相同,此时浏览器仍旧缓存页面,但把页面标记为立即过期

header('Pragma:no-cache');

//....

?>

action有这样的一个方法生成令牌

复制代码 代码如下:

protected String generateToken(HttpServletRequest request) {

HttpSession session = request.getSession();

try {

byte id[] = session.getId().getBytes();

byte now[] =

new Long(System.currentTimeMillis()).toString().getBytes();

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(id);

md.update(now);

return (toHex(md.digest()));

} catch (IllegalStateException e) {

return (null);

} catch (NoSuchAlgorithmException e) {

return (null);

}

}

asp来做实例

表单文件formtest.asp

复制代码 代码如下:

<%

Randomize'初始代随机数种子

num1=rnd() '产生随机数num1

num1=int(26*num1)+65'修改num1的范围以使其是A-Z范围的Ascii码,以防表单名出错

session("antry")="test"&chr(num1)'产生随机字符串

%>

<form name="test" action="testact.asp" method="post">

你的名字:<input type='text' name='' size=30> '注意本行中使用了随机表单项名

<input type='submit' value='提交'>

</form>

表单处理程序testact.asp

复制代码 代码如下:

<%

teststr=request.form(session("antry"))

if teststr="" then

response.write "没有填写姓名或重复提交"

'由于用户没有填写名字,或表单被重复提交(标志为session("antry")为空)引起

else

response.write teststr

session("antry")=""'提交成功,清空session("antry"),以防重复提交!!

end if

%>

在这里,你只需随机化一个必填项目的表单项名即可,不必随机化所有的表单项目

【js防止表单重复提交实现代码】相关文章:

Javascript 字符串模板的简单实现

javascript用函数实现对象的方法

基于javascript简单实现对身份证校验

将HTML自动转为JS代码

js实现异步循环实现代码

实现DIV圆角的JavaScript代码

js去字符串前后空格的实现方法

javascript生成不重复的随机数

Js和JQuery获取鼠标指针坐标的实现代码分享

一段实时更新的时间代码

精品推荐
分类导航