【问题标题】:session variable vs normal variable? [closed]会话变量与普通变量? [关闭]
【发布时间】:2012-12-01 16:32:14
【问题描述】:

有什么区别?我知道会话变量存储信息并让您跨页面使用它,但我有几个问题:值存储在哪里?会话变量和普通变量有什么区别?

这是在 PHP 的上下文中。我正在寻求深入的回答,因为我没有在网上找到很多关于此的信息。

【问题讨论】:

  • 你检查过 php.net 或 google 吗?这是有据可查的。我没有必要给你写一份报告,重申已经存在的东西。
  • 嗨 NappingRabbit,是的,在问这个问题之前,我确实检查了 google 和 php.net 一段时间。我没有找到我要找的东西。很抱歉,您不必回答我的问题。
  • 对于“值存储在哪里”:普通变量,它存储在(服务器的)内存中; session 变量,它存储在临时文件中,或者如果配置为,则存储在数据库中。可以在此处找到完整的会话配置参数列表:php.net/manual/en/session.configuration.php

标签: php session variables


【解决方案1】:

默认情况下,会话变量存储在服务器上的文件中。处理指向用户的会话通常是浏览器中设置的 cookie(或者可能是查询字符串中的丑陋参数,但不建议这样做)。

the documentation 中有很多关于会话如何工作的信息。

【讨论】:

    【解决方案2】:

    PHP 将会话变量(具有唯一 ID)存储在本质上是服务器站点 cookie 中。然后它会在用户的浏览器中存储一个 cookie 来跟踪会话 ID,以便以后查找。

    Cookie 基本上是包含每个变量的编码数据的文本文件。

    普通变量只是存储在临时内存中,完成后会被垃圾回收。

    编辑:另外,请参阅此答案以获取替代定义:PHP: Storing 'objects' inside the $_SESSION

    【讨论】:

    • 感谢伊恩的回答。会话是 cookie 吗?或者它们是不同的东西?会话是 cookie 的一种形式吗?
    • @BobUni:会话不是 cookie,但 cookie 可用于存储会话标识符。
    【解决方案3】:

    值存储在哪里?

    这取决于 PHP 配置。默认情况下,会话变量被序列化并写入服务器文件系统上的文件中。在启动会话的每个页面视图上,它们都是非序列化的,并且可以从 $_SESSION 数组访问。可以覆盖默认会话处理程序,以便您可以将变量存储在其他地方,例如数据库。

    会话通过将会话 ID(这是一个唯一标识符)作为 cookie 存储在客户端计算机上来工作。每次客户端请求一个页面时,会话 ID cookie 会随请求一起发送,PHP 从 cookie 中提取会话 ID,然后拉取与该会话 ID 相关的会话数据。

    会话变量和普通变量有什么区别?

    简单地说,会话变量被保存到源(例如文件系统),这就是它们如何在页面请求之间保持不变。普通变量只会在脚本执行完成之前存在,然后会被销毁。

    【讨论】:

      猜你喜欢
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      相关资源
      最近更新 更多