我是不是正确使用 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 会话在表单之间保留数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章