栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

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

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

基于令牌的处理就是一劳永逸的方法。
复制代码 代码如下:


防止网页后退–禁止缓存
通过控制浏览器的缓存及页面的有效期,当在重定向之后的新页面上点击浏览器后退按钮时,会提示”网页已过期”,从而防止后退时导致表单被提交。但这种方式不是对所有浏览器都是有效的,所以要考虑后再使用。在response时在header中添加如下代码来控制浏览器的缓存及网页的有效期限或直接在网页的中添加:
复制代码 代码如下:
//.....
///在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) '产生随机字符串
%>


表单处理程序testact.asp
复制代码 代码如下:
<%
  teststr=request.form(session("antry"))
  if teststr="" then
   response.write "没有填写姓名或重复提交"
   '由于用户没有填写名字,或表单被重复提交(标志为session("antry")为空)引起
  else
   response.write teststr
   session("antry")=""  '提交成功,清空session("antry"),以防重复提交!!
  end if
%>

在这里,你只需随机化一个必填项目的表单项名即可,不必随机化所有的表单项目
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/112721.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号