我是不是正确使用 PHP 会话在表单之间保留数据? [复制]

Posted

技术标签:

【中文标题】我是不是正确使用 PHP 会话在表单之间保留数据? [复制]【英文标题】:Am I correct to use a PHP session to persist data between forms? [duplicate]我是否正确使用 PHP 会话在表单之间保留数据? [复制] 【发布时间】:2013-03-27 20:03:45 【问题描述】:

只是一个简单的问题。

我有一个表单,它可以捕获一些数据,对其进行验证,然后将其发布到同一站点上的另一个页面。如果没有错误,我正在使用 header() 进行重定向,但显然数据没有在帖子中发送。

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

谢谢大家。

【问题讨论】:

是的。这是完全可以接受的。 唯一的问题是,如果您遇到需要超过 1 台机器为您的应用程序服务的情况。然后你会遇到会话问题......并且必须将数据保存在共享数据源(如缓存或数据库)中 我认为处理负载平衡器和多台服务器与最初的问题相比有点跳跃,但在技术上仍然有效 - 我猜。 呃抱歉留下一些参考。自然,他必须什么都不做,可以而且应该做他想做的事。就技术而言,我更喜欢一些参考而不是意见。并不是说总是可以给予,而是超文本来拯救。 @Rawkode。同意。您的回答提供了所需的输入。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

是的,它是正确的方法。

但是,根据情况,还有其他替代方案,例如隐藏变量、iframe 等。如果您能解释整个情况,根据数据的性质,我可以为您提供更准确的答案。

【讨论】:

【参考方案4】:

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

您还可以通过 php 直接在新表单中插入发布的数据而不保存它 - 但如果您通过标题重定向,这将不起作用

【讨论】:

【参考方案5】:

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

你也可以创建cron作业来清空表

【讨论】:

以上是关于我是不是正确使用 PHP 会话在表单之间保留数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

php表单mysql更新保存数据

PHP保留URL参数表单页面

从浏览器获取相同的会话到 Adob​​e

设置一个配置 PHP 类来保留项目设置是不是正确?

PHP会话的数据在页面重新加载之间不一致 - 但会话ID是相同的

页面之间的 PHP 会话丢失 - 行为因服务器而异