如何用PHP检查多个表单提交?

时间:2014-09-27 22:42:24

标签: php forms

我有自己的MVC应用程序,我有3个主要区域:模型,视图,控制器。

在视图中,我创建了一个表单,将一些数据插入到数据库中。操作设置为同一页面,类型为:POST。

在模型中,如果表单已提交,我会进行一些基本检查。之后有一秒睡眠。

在控制器中,我以非常简单的方式连接视图和模型,因此它们可以相互通信。

但是,只要访问者在提交按钮上多次单击,就会出现问题。因为等待1秒(这是故意的 - 所以它像系统处理数据一样),他们可以多次点击按钮。

存在一个问题,因为这样,数据会根据点击次数插入到数据库中。如果我输出一个简单的单词,比如“Foo”,它只会显示一次(我猜这是因为页面每次都重新加载),但数据会多次插入数据库。

有没有解决这个问题的方法?我的目的是创建一个会话并检查这是否是第一次提交,否则对数据库不执行任何操作。但是这不起作用,因为会话总是在页面加载时获得基本值。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

两个选项:

  1. 在前端放置一些javascript以在点击时禁用该按钮,然后提交表单 - 这可能是最简单的方法,但您可能想尝试让前端尽可能整洁。

  2. 在加载页面之前设置会话变量,然后在执行插入操作之后立即删除此会话变量。在进行插入之前,您应该检查会话变量 - 如果已设置,则允许插入,如果不是,则不是。您可能还希望将代码添加到主控制器(如果所有控制器都是从一个主控制器派生)中,该控制器检查已调用的控制器,然后如果设置的会话变量应该用于不同的控制器,那么它应该是已删除(如果用户在未提交表单的情况下转到其他页面,则不再存在。)