基于令牌的处理就是一劳永逸的方法。 复制代码 代码如下: <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 %> 在这里,你只需随机化一个必填项目的表单项名即可,不必随机化所有的表单项目
推荐阅读
11个用于提高排版水平的基于jquery的文字效果插件
排版是在网页设计当中的一个重要的元素,实现一个高层次的排版风格可以让你的网页设计看起来更令人叹为观止,当你看到一些非同寻常的排版样式,你很好奇这些绚丽的色彩文字搭配效果是如何实现的,往往我们第一印象>>>详细阅读
本文标题:js防止表单重复提交实现代码
地址:http://www.17bianji.com/kaifa2/JS/23126.html
1/2 1