会话变量与正常变量?

时间:2012-12-13 18:01:03

标签: php session variables

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

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

3 个答案:

答案 0 :(得分:3)

  

存储的值在哪里?

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

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

  

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

普通变量只存储在临时存储器中,并在完成后进行垃圾回收。

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