javascript下阻止表单重复提交、防刷新、防后退


1 服务器端的解决方法。这是我最为推荐的方法。优点是判断准确,兼容性最大。

做法:a页面显示表单,然后提交b页面处理,处理完后重定向到c页面显示结果。

1.0 在访问a页面时在session里生成一个标志ID,例如

//伪代码
session("submitID")=random()
然后把这个值写到表单的一个hidden的input里

//伪代码
<%response.write("<input name=submitID2 type=hidden value=\""+session("submitID")+"\">")%>
1.1 b页面处理时判断表单所提交的submitID2的值是否和session中的submitID一致,不一致的话重定向到报错页面,一致的话把session中的submitID清空然后进行表单处理

//伪代码
session("submitID")=""
//然后处理提交......
处理完成后重定向到c页面

1.2 c页面其实就没什么好说的了,就是一个显示处理结果的页面。

2 客户端用js解决
这种方法不好,因为必然会遇到不同浏览器的兼容性问题,而且是必然可以绕过的。唯一的优点就是简单,不需要太多的编码

2.0防止后退
在每个页面的最顶上加上这个代码

<script>window.history.forward();</script>
2.1防止刷新
我很难想到什么好方法可以做到。因为要屏蔽的地方太多了。只好采用一种很烂的方法:

<body onunload="location='about:blank'>" <!-- 这个方法只是个想法,没有经过调试 -->



相关阅读:
8个工作实用而有趣Linux下的Bash命令提示行
Discuz!4.1.0 IIS Rewrite设置方法
开始使用ASP脚本语言
asp 动态数组 提供Add、Insert、Remove、RemoveAt、Search等方法。
repaint和reflow的相关知识
winxp 安装MYSQL 出现Error 1045 access denied 的解决方法
JavaScript DOM学习第四章 getElementByTagNames
yum update 升级报错的解决办法
通过优化网页页面降低对内存及CPU的占用
javascript 手机号码验证是否正确
AJAXRequest v0.2
WordPress 发布时间超过15天的文章中展示广告
Web前端开发的Firefox插件
服务器端解压缩zip的脚本
快速导航

Copyright © 2016 phpStudy |