使用PHP会话在表单之间持久化数据是正确的吗?


Am I correct to use a PHP session to persist data between forms?

问个小问题。

我有一个表单,它捕获一些数据,验证它,然后发布到同一站点的另一个页面。如果没有错误,我使用header()来重定向,但显然数据没有在post中发送。

使用会话在两个页面之间持久化数据是正确的吗?

谢谢。

如果您只需要第二页的数据,并且数据不敏感,那么您不妨在header()中传递数据。

$url = "www.example.com?variable=value&id=something";
I.e. header('Location: $url');

这些类型的"flash消息"是很好的,并且是防止用户能够重新加载页面并重新提交表单的好方法,如果你担心的话。我会提醒您在显示消息后取消会话变量的设置。

是的,这是正确的方法。

然而,根据不同的情况,也有其他的选择,如隐藏变量,iframe等。如果你能解释一下整个情况,根据数据的性质,我可以给你更精确的答案。

您可以将数据存储在服务器端(Session)或客户端(Cookie)。选择哪种方式取决于数据类型和安全问题。

也可以通过PHP直接在新表单中插入发布的数据而不保存它-但如果您通过header

重定向,则无法工作。

是的,你可以这样做,但为了更安全,在db中添加额外的DUMMY字段或其他东西。通过这个,如果你需要丢弃,你可以丢弃虚拟记录。但是你需要有时间戳,这样你就不会删除那些最近添加的和正在处理的记录。

您还可以创建cron作业来清空表