一些php帮助制作一个'批准表单'页面

时间:2009-11-15 21:40:10

标签: php javascript sql mysql html

我有一个包含大量输入的主表单。表单操作设置为php文件。 提交后,php页面显示用户输入表单的所有输入。用户必须重新检查所有内容并点击“批准”按钮! 问题是,我不知道该怎么做......

我想最终将所有数据都放入MySQL数据库中,但只有在获得批准后才能提交表单!

单击“批准”按钮后,有没有办法“回忆”php脚本?

这是怎么做到的?我的意思是,我不想将信息写入MySQL数据库,然后用户后悔并且没有点击“批准”,然后数据已经存在于数据库中。

谢谢!

如果您需要更多输入(我会更新问题),请告诉我。

3 个答案:

答案 0 :(得分:4)

实现此目的的一种方法是以html隐藏输入的形式重写刚刚提交到批准表单中的每个值。像这样:

<form name="approval" method="post>
    <input type="hidden" name="firstname" value="<?php echo htmlspecialchars($_REQUEST['firstname']); ?>" />
    <input type="hidden" name="lastname" value="<?php echo htmlspecialchars($_REQUEST['lastname']); ?>" />
    ...
    <input type="submit" value="Approve!" />
</form>

其他人建议将值存储在用户会话中。如果您选择走这条路线,请注意那些喜欢同时打开多个浏览器窗口的用户。他们的不同形式将共享相同的会话,并根据他们选择提交表单的顺序,如果您的代码太天真,您最终可能会遇到一些交叉线。解决此问题的一种方法是为每个表单生成一个唯一键,并在页面之间传递它。这当然变得混乱,这就是为什么我更喜欢隐藏的表格场方法。

与会话方法相关的另一个缺陷是PHP的默认会话实现使用本地文件系统来存储会话数据。当您拥有冗余Web服务器时,这会中断。当然,您可以将基于默认文件的会话实现交换为更复杂的内容(可能基于memcached)。但同样,这只是更复杂。为什么不避免复杂性并坚持使用隐藏的表单字段?

答案 1 :(得分:0)

您可以使用以下两种方式之一存储信息:使用会话或隐藏表单输入。

使用会话在这种情况下,use the session对我们来说很有意义。因此,在提交第一个表单时,启动与用户的会话并保存其中的所有值。然后,确认页面只显示数据。当用户点击“批准”时,这会触发您的脚本存储会话中已有的信息。这是一种众所周知的方法,用于在请求之间保持信息。

使用隐藏表单在写出“批准”页面时,您还可以编写隐藏的表单输入以及显示的确认数据。添加新字段以指示用户已批准此数据,您的脚本只会在看到此确认值时写入数据库。

在不了解您的应用程序的情况下,我更倾向于在这种情况下使用会话。

答案 2 :(得分:0)

您可以先将所有信息存储在会话中。然后进行计算,让用户批准信息。将它们从会话写入数据库。