#1 yuyu775

用了SPEEDPHP框架后,每次刷新页面就自动提交表单,数据库就自动增加一条记录;如何防止啊;

2010-05-17 23:57:01

#2 chaobo_wu

刷新页面自动提交表单?一般不会出现这样的情况,可能是页面加载就调用了JS文件,然后JS提交的表单

2010-05-18 00:14:39

#3 azwl

刷新页面理论上是不会提交表单的。为了防止多次提交表单,倒是可以在提交后马上将提交按钮disabled

2010-05-18 08:05:47

#4 jake

用了SPEEDPHP框架后,每次刷新页面就自动提交表单,数据库就自动增加一条记录;如何防止啊; ...
yuyu775 发表于 2010-5-17 23:57 $this->bb_img('http://speedphp.com/bbs/images/common/back.gif')
这个问题是技巧,不是说用了SPEEDPHP框架才会有,普通的PHP表单也会如此,这个问题是“如何防止远程提交”,和不断刷新提交是同理的。

如:A页面表单提交到B页面,使用SESSION控制,在A页面显示的时候生成一个随机数字的SESSION,
然后B页面的逻辑就是:


1. 检查是否有该SESSION,有则开始进行数据库处理,无则弹回表单会提示不能重复刷新。
2. 数据库处理
3. 设置该SESSION为null(注销)


用SESSION是比较简单的方式,另外还有一些类似于使用hash值隐藏表单域的方式。

2010-05-18 08:43:31

#5 yuyu775

恩 谢谢 我知道 session 的方法,  不过我以前没用过 MVC模式 和模板引擎  不知道这个session怎么加,是加到控制层吗?

2010-05-18 08:56:26

#6 jake

对,这个SESSION的方法是控制“用户交互”的,所以应该放在负责“交互”的控制层。

2010-05-18 08:57:44

#7 yuyu775

哦 谢谢  我去试试  回答好快啊  呵呵

2010-05-18 08:59:47

#8 azwl

还是disabled提交按钮比较简单啊

2010-05-18 12:56:13