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 相关文章推荐
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
May 25 Javascript
解析Javascript中大括号“{}”的多义性
Dec 02 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
jquery实现拖动效果
Aug 10 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
重新理解JavaScript的六种继承方式
Mar 24 Javascript
windows下vue-cli及webpack搭建安装环境
Apr 25 Javascript
微信小程序之网络请求简单封装实例详解
Jun 28 Javascript
angular4中引入echarts的方法示例
Jan 29 Javascript
node.js中path路径模块的使用方法实例分析
Feb 13 Javascript
webpack的移动端适配方案小结
Jul 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
服务器上配置PHP运行环境教程
2015/02/12 PHP
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
javaScript语法总结
2016/11/25 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
Python中有几个关键字
2020/06/04 Python
python 用struct模块解决黏包问题
2020/11/07 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
.NET程序员的数据库面试题
2012/10/10 面试题
乡镇干部十八大感言
2014/02/17 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
运动会加油稿20字
2014/11/15 职场文书
五年级上册复习计划
2015/01/19 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
材料员岗位职责范本
2015/04/11 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
标枪加油稿
2015/07/22 职场文书
《灰雀》教学反思
2016/02/19 职场文书
入团申请书格式
2019/06/20 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android