制作“批准表格”页面的一些 php 帮助

Posted

技术标签:

【中文标题】制作“批准表格”页面的一些 php 帮助【英文标题】:some php help in making an 'approve form' page 【发布时间】:2009-11-15 21:40:09 【问题描述】:

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

我想最终将所有数据放入 mysql 数据库,但只有在点击批准后,才提交表单!

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

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

谢谢!

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

【问题讨论】:

【参考方案1】:

实现此目的的一种方法是以 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)。但同样,这只是更复杂。为什么不避免复杂性并坚持使用隐藏的表单字段?

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

这取决于您所说的“可靠”。会话可以根据服务器配置超时(大约 15 分钟)。只需在第一次发布时发送“确认”值即可绕过隐藏表单。 使用隐藏输入的一个缺点是您无法轻松处理文件上传等事情。此外,如果您正在处理大型表单输入,则每次都必须将数据来回发送给客户端,这可能是一种浪费。 对不起,另一个想法...如果您的表单跨越多个页面,则可能很难允许用户使用隐藏输入在页面之间来回移动。一般来说,会话​​旨在处理您正在尝试做的事情:记住请求之间的状态。【参考方案3】:

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

【讨论】:

以上是关于制作“批准表格”页面的一些 php 帮助的主要内容,如果未能解决你的问题,请参考以下文章

PHP制作登录页面,登录后如何显示昵称?

iOS:如何在 SwiftUI 页面顶部制作我的图像徽标

PHP制作登录注册页面

空白页 PHP - HTML - CSS

php练习-javascript,JQuey制作页面切换

如何使用php制作涉及会话cookie的注销页面?