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 (十一) 实战表单验证与自动完成提示插件
Feb 23 Javascript
使用JavaScript动态设置样式实现代码(2)
Jan 25 Javascript
jQuery实现图片左右滚动特效
Apr 20 Javascript
js改变style样式和css样式的简单实例
Jun 28 Javascript
浅谈javascript中的事件冒泡和事件捕获
Dec 28 Javascript
vue.js+Echarts开发图表放大缩小功能实例
Jun 09 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
浅析Node.js非对称加密方法
Jan 29 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
vue开发拖拽进度条滑动组件
Sep 21 Javascript
基于Vue CSR的微前端实现方案实践
May 27 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
php 图像函数大举例(非原创)
2009/06/20 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
PHP中SESSION过期设置
2021/03/09 PHP
最短的IE判断代码
2011/03/13 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
前台文员岗位职责及工作流程
2013/11/19 职场文书
品牌服务方案
2014/06/03 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
庆六一宣传标语
2014/10/08 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
感谢信模板大全
2015/01/23 职场文书