提交表单如何防刷新?
Submitted by gouki on 2008, July 2, 11:13 PM. PHP
自从有表单提交开始,这就是一直被人关注的话题。
搜索一下google,你可以搜到N条纪录,可是真正对你有用的有几条呢?
你搜索到的大多数都是讲的ASP网站下如何处理,少数讲了.net的,java的都放到框架里了,剩下的PHP的都是说用Session来解决。当然也有人回复直接加header标签,让他永远过期。就不会重复提交了。。
事实有用吗?我们一一看来,ASP的我们直接忽略,当然也可以参考他的一些方法而且PHP实现,但现在不看。一来,类似的方法PHP也有,二来,不喜欢ASP(这可以算个理由吧)
1、用session,表面上很不错,就和验证码似的,提交的时候判断是否与session的赋值相等,如果相等就提交,同时再注销这个session变量。不错,确实可行,但,如果表单的显示、提交、处理都在同一个页面里怎么办?根本无法处理,直接无视
2、JS控制,说是在没有提交的时候,var一个变量为false,onsubmit的时候,将它赋值为true,同时判断,如果是true就不让提交。听听是不错,可惜,实现起来并不是想象的这么容易。一旦提交后在跳转时按F5,这些就是白搭 。
3、disabled提交按钮。有用吗?效果同上
4、用COOKIE,有用吗???真的有用吗???或许吧,但是如果客户端关闭了cookie怎么办?那岂不是永远不会被提交了?
5、header过期。我开始也以为有用,并且在跳转函数前加上了这些。共四行代码哦。具体什么代码,我就不贴了,网上一搜一大堆。但实际中,如果问题和第一条相同,这点根本无法处理。
我现在怎么做?我现在是记录提交时间,刷新的时候用当前时间减去这个提交时间,如果在一定时间内就提示不能刷新。然后置时间为0,并强行跳转到列表页。
其实现在的很多框架都已经有处理。TP就是内置的。
很多论坛里面也有类似的处理,象discuz等等,可是,就象我说的,如果提交、显示都在同一个页面,那处理起来就复杂了。
虽然很多人说,这样并不建议,但已经这样了,我也总要找个解决方法的吧??对不?
本站采用
创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"
易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.
Tags: 表单, 防刷新
« 上一篇 | 下一篇 »
只显示10条记录相关文章
HTML 5的五个激动人心的特性 (浏览:
20165, 评论:
0)
13条记录访客评论
sdfsdfsdf
Post by sdfsdf on 2013, February 19, 3:50 PM #1
ppppppppppppppp
Post by ppp on 2012, February 3, 10:47 AM #2
检验一定要4字节以上吗?
Post by a132811 on 2011, October 11, 3:49 AM #3
滚滚滚滚滚滚滚滚滚滚滚滚滚
Post by ?? on 2011, September 1, 11:11 AM #4
ddddddddddddddddddd
Post by aaaaaaaaaaa on 2010, August 11, 12:23 AM #5
在一定时间内提示不能刷新,意味着这段时间内就算是正常提交同样不能
Post by aaa on 2010, June 29, 2:28 PM #6
fffffffffffffffff
Post by ffffffffff on 2010, June 2, 11:34 AM #7
asdfsaf
Post by 栽植 on 2010, May 27, 5:35 PM #8
双的分公司答复
Post by 双的分公司答复 on 2010, May 5, 10:58 AM #9
fdsafdafdsfds
Post by dafs on 2009, May 31, 9:58 AM #10
测试看看会刷新不!
Post by a on 2009, April 3, 5:11 PM #11
测试看看会刷新不!
Post by hello on 2008, December 8, 9:06 AM #12
还没有解决方法吗?
Post by aaaaa on 2008, December 6, 10:32 PM #13
发表评论