源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

js防止表单重复提交实现代码

  • 时间:2022-02-10 13:39 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:js防止表单重复提交实现代码
基于令牌的处理就是一劳永逸的方法。
[u]复制代码[/u] 代码如下:
<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>中添加:
[u]复制代码[/u] 代码如下:
<?php //..... ///在IE 4或5中,Cache-Control标记将被忽略,不起作用 header('Cache-Control: no-cache'); header('Expires: 0'); //对于https有效,与“Expires: -1”相同,此时浏览器仍旧缓存页面,但把页面标记为立即过期 header('Pragma:no-cache'); //.... ?>
action有这样的一个方法生成令牌
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
<%   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
[u]复制代码[/u] 代码如下:
<%   teststr=request.form(session("antry"))   if teststr="" then    response.write "没有填写姓名或重复提交"    '由于用户没有填写名字,或表单被重复提交(标志为session("antry")为空)引起   else    response.write teststr    session("antry")=""  '提交成功,清空session("antry"),以防重复提交!!   end if %>
在这里,你只需随机化一个必填项目的表单项名即可,不必随机化所有的表单项目
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部