Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中在页面之间传递类实例和其他数据_Php - Fatal编程技术网

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

在PHP中在页面之间传递类实例和其他数据,php,Php,我一直在研究在PHP中页面之间提供持久数据的问题。这尤其适用于在一个页面中设置的、以后需要访问的对象。这似乎比我想象的要困难,但有几种方法可以做到这一点,尽管它们似乎都有点难以使用,尤其是当数据变得非常复杂时: 通过$\u GET或$\u POST将数据传递到下一页 将数据复制到数据库并在下一页中检索 将数据放入会话或cookie中 序列化对象并使用相同的参数和值重新创建它 这些看起来都很费劲,因为它们主要依赖于必须解构现有的数据结构,然后在下一页重新构建它。我假设这是为了减少PHP服务器的

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

  • 通过$\u GET或$\u POST将数据传递到下一页
  • 将数据复制到数据库并在下一页中检索
  • 将数据放入会话或cookie中
  • 序列化对象并使用相同的参数和值重新创建它
这些看起来都很费劲,因为它们主要依赖于必须解构现有的数据结构,然后在下一页重新构建它。我假设这是为了减少PHP服务器的内存需求,只要关闭一个页面,就立即清除其中的数据,并从“干净的板岩”开始

在PHP中,有没有更直接的方法在页面之间传递更大的数据结构

非常感谢,, 千瓦

我假设这是为了减少PHP服务器的内存需求,只要关闭一个页面,就会清除其中的数据

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

您提出的方案的反例:

  • 假设Alice访问了A页,创建了一些对象,您希望它们在B页中可用

  • 您跟踪到B页的访问

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

    2.2。又是Alice,但请求已从1000服务器场到达另一台机器。当然,您没有原始的PHP对象。你现在做什么

  • 我假设这是为了减少PHP服务器的内存需求,只要关闭一个页面,就会清除其中的数据

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

    您提出的方案的反例:

  • 假设Alice访问了A页,创建了一些对象,您希望它们在B页中可用

  • 您跟踪到B页的访问

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

    2.2。又是Alice,但请求已从1000服务器场到达另一台机器。当然,您没有原始的PHP对象。你现在做什么


  • 如果使用$\u GET或$\u POST,则仅限于非敏感数据,并且将对象公开给任何用户。你不会想要的

    饼干的大小是有限的

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


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

    如果您使用$\u GET或$\u POST,则仅限于非敏感数据,并且您将对象公开给任何用户。你不会想要的

    饼干的大小是有限的

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


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

    使用会话是否会出现性能问题?性能不是我最关心的问题,但我知道从服务器读/写会话数据的传输瓶颈很小。我更关心的是使用复杂的代码在页面之间重新创建数据。感谢您的输入。您在使用会话时是否遇到任何性能问题?性能不是我最关心的问题,但我知道从服务器读取/写入会话数据的传输瓶颈很小。我更关心的是使用复杂的代码在页面之间重新创建数据。谢谢你的意见。谢谢你的宝贵意见。考虑到简单登录有多普遍,如果POST/GET易被截获,用户名/密码如何发送?由于URL中的数据不可直接读取,我假设POST的公开程度略低于GET,这是否仍然可以轻松读取?从表单发送数据的唯一方法是通过$\u GET和$\u POST$_POST更安全,因为如果通过SSL连接使用POST,它是加密的,并且数据不由浏览器缓存(可能由浏览器缓存,其他用户可以查看历史记录以查看您的数据)。感谢您的有用评论。考虑到简单登录有多普遍,如果POST/GET易被截获,用户名/密码如何发送?由于URL中的数据不可直接读取,我假设POST的公开程度略低于GET,这是否仍然可以轻松读取?从表单发送数据的唯一方法是通过$\u GET和$\u POST$_POST更安全,因为如果通过SSL连接使用POST,它是加密的,并且数据不会被浏览器缓存(可能会被浏览器缓存,其他用户可以查看历史记录以查看您的数据)。您的观点非常正确,但我认为当“Alice”访问B页时,数据只对“Bob”可用。谢谢您的帮助,我很欣赏你的洞察力。@Kwangle:是的,好吧,(在http中)这是不可能的另外,别忘了接受有用的答案。你的观点很有道理,但我认为只有“Alice”才能在“Bob”访问B页时获得数据,而不是“Bob”。谢谢你的帮助,我感谢你的见解。@Kwangle:是的,嗯,(在htt中)这是不可能的