js防止表单重复提交实现代码


Posted in Javascript onSeptember 05, 2012

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

<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 
%>

在这里,你只需随机化一个必填项目的表单项名即可,不必随机化所有的表单项目
Javascript 相关文章推荐
用正则表达式 动态创建/增加css style script 兼容IE firefox
Mar 10 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
jQuery的ajax下载blob文件
Jul 21 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
Sep 04 Javascript
jQuery实现拖拽可编辑模块功能代码
Jan 12 Javascript
js实现简单的手风琴效果
Feb 27 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
在vue中使用setInterval的方法示例
Apr 16 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
May 17 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
Mar 17 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
Aug 31 Javascript
vue 图片裁剪上传组件的实现
Nov 12 Javascript
javascript面向对象入门基础详细介绍
Sep 05 #Javascript
说说JSON和JSONP 也许你会豁然开朗
Sep 02 #Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
Sep 02 #Javascript
Javascript中的delete介绍
Sep 02 #Javascript
JS判断当前日期是否大于某个日期的实现代码
Sep 02 #Javascript
Javascript this 的一些学习总结
Aug 31 #Javascript
javascript动画浅析
Aug 30 #Javascript
You might like
多文件上传的例子
2006/10/09 PHP
很好用的PHP数据库类
2009/05/27 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
永不消失的title提示代码
2007/02/15 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
深入解析Python编程中JSON模块的使用
2015/10/15 Python
Python实现定时任务
2017/02/08 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
python七夕浪漫表白源码
2019/04/05 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
python中必要的名词解释
2019/11/20 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
预备党员公开承诺书
2014/05/28 职场文书
给客户的检讨书
2014/12/21 职场文书
房屋认购协议书
2015/01/29 职场文书
布达拉宫的导游词
2015/02/02 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
方法汇总:Python 安装第三方库常用
2022/04/26 Python