繁体   English   中英

在PHP页面之间传递类实例和其他数据

[英]Passing class Instances and other data between pages in PHP

我一直在研究在PHP页面之间具有持久数据可用的问题。 这尤其适用于已在一页中设置的对象,以后需要访问。 看来这比我想象的要困难得多,但是可以用多种方法来完成,尽管它们似乎都很难使用,尤其是当数据变得非常复杂时:

  • 通过$ _GET或$ _POST将数据传递到下一页
  • 将数据复制到数据库并在下一页中检索它
  • 将数据放入会话或cookie
  • 序列化对象并使用相同的参数和值重新创建它

这些似乎都很费力,因为它们主要依赖于必须解构现有数据结构,然后在下一页重新构建它。 我认为这是为了通过关闭页面后立即从一页清除数据并以“干净的状态”开始减少PHP服务器的内存需求。

有没有更直接的方法可以在PHP页面之间传递较大的数据结构?

非常感谢,Kw

我认为这是为了通过关闭后从一页清除数据来减少PHP服务器的内存需求。

不,这不是因为内存效率问题。 这是因为HTTP协议是无状态的。 每个请求必须包含实现它所必需的所有信息。

您提出的方案的反例:

  1. 让我们假设爱丽丝访问页面A,创建了一些对象,并且希望它们在页面B中可用。

  2. 您跟踪对页面B的访问。

    2.1。 但这不是爱丽丝,是鲍勃。 您如何确定要显示的对象以及从何处获取对象?

    2.2。 再次 Alice,但是请求从您的1000服务器场到达了另一台计算机。 自然,您没有原始的PHP对象。 你现在做什么?

如果使用$ _GET或$ _POST,则仅限于非敏感数据,并且会将对象公开给任何用户。 你不要那样

Cookie的大小受到限制

Cookie通常限制为4096个字节,并且每个站点最多只能存储20个Cookie。

在请求之间(对于同一用户)在对象之间持久保存对象的最佳方法是使用会话。 已经有用于memcached,redis,mysql等的会话保存处理程序。如果需要自定义,也可以编写自己的会话保存处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM