| 网站首页 | 新闻 | 教学 | 动漫 | 资源 | 素材 | 图库 | 历史 | 音乐 | 影视 | 投稿 | 论坛 | 留言 |

发新话题
打印

如何防止asp表单重复提交

如何防止asp表单重复提交

您是本帖第305个阅读者
 在很多情况下都需要防止相同的表单被多次提交,很多人的实现方法都比较复杂(代码数量超过几十行!!)下面提供一种只需使用几行代码的方法,轻松地实现了防止用户刷新多次提交表单和使用后退钮重复多次提交表单。
  表单文件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 name="<%=session("antry")%>" type="text" 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
%>
  在这里,你只需随机化一个必填项目的表单项名即可,不必随机化所有的表单项目。

TOP

asp为了禁止重复提交表单,还可以采用以下办法:
为防asp重复提交,不缓存提交页面。
在提交页面加入以下代码,这样用户提交表单后,返回此页面或点浏览器“后退”按钮回到此页面,此页面原来的输入的内容都会被清除(清除此页的浏览器缓存),以防止用户再次提交相同表单。
第一种:
复制内容到剪贴板
代码:
<%
pStr = "private, no-cache, must-revalidate"
Response.ExpiresAbsolute = #2000-01-01#
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", pStr
%>
第二种:
复制内容到剪贴板
代码:
<%
'强制性刷新随机验证码
'让随机验证码每次按IE的后退按钮时,返回登录页面的随即码都自动刷新,
Response.expires=-1
Response.AddHeader"pragma","no-cache"
Response.AddHeader"cache-control","no-store"
%>
[ 本帖最后由 我心依旧 于 2008-8-12 09:01 编辑 ]

TOP

发新话题