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 相关文章推荐
网页中实现浏览器的最大,最小化和关闭按钮
Mar 12 Javascript
JavaScript 学习小结(适合新手参考)
Jul 30 Javascript
javascript实现树形菜单的方法
Jul 17 Javascript
浅析javascript的return语句
Dec 15 Javascript
jquery过滤特殊字符',防sql注入的实现方法
Aug 17 Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
Mar 21 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
Sep 19 Javascript
vue实现弹幕功能
Oct 25 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 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
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
支持中文字母数字、自定义字体php验证码代码
2012/02/27 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
layui导航栏实现代码
2017/05/19 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
vue.js中created方法作用
2018/03/30 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
Python三元运算实现方法
2015/01/12 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
异常和异常类的概念
2014/09/12 面试题
行政办公员自我评价分享
2013/12/14 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
学生打架检讨书大全
2014/01/23 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
百日安全活动总结
2014/05/04 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
导游词之山海关
2019/12/10 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫
Python代码实现双链表
2022/05/25 Python