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 相关文章推荐
jQuery ctrl+Enter shift+Enter实现代码
Feb 07 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
Apr 07 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
Jan 07 Javascript
告诉你什么是javascript的回调函数
Sep 04 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
详解handlebars+require基本使用方法
Dec 21 Javascript
微信小程序开发之Tabbar实例详解
Jan 09 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
Jul 18 jQuery
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 Javascript
浅谈Vue下使用百度地图的简易方法
Mar 23 Javascript
vue中vee validate表单校验的几种基本使用
Jun 25 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
python生成IP段的方法
2015/07/07 Python
浅析Python中的for 循环
2016/06/09 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
交通安全演讲稿
2014/01/07 职场文书
女娲补天教学反思
2014/02/05 职场文书
统计岗位职责
2014/02/21 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
cf战队收人广告词
2014/03/14 职场文书
尊师重教主题班会
2015/08/14 职场文书
小学毕业教师寄语
2019/06/21 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技