如何在PHP中访问会话变量?

时间:2013-09-26 18:54:51

标签: php client session-variables

PHP或服务器端的任何其他语言如何在客户端计算机上存储会话?

你可以帮帮我吗?

4 个答案:

答案 0 :(得分:2)

会话存储在服务器上。在文件系统上(通常在tmp文件夹内)或在数据库内(如果已设置数据库会话处理)。有时,它们将存储在Memcached等缓存守护程序中。无论哪种方式,会话数据都存储在服务器上而不是客户机上。

在客户端,您通常会有一个cookie,其中包含session ID,用于将用户链接到存储在服务器上的会话数据。在某些情况下,此ID可能会被强制附加到URL,这就是为什么您有时会在其网址中看到PHPSESSID作为GET参数的网站。

基本上,当您访问网站时,该网站将读取存储在您计算机上的cookie中的PHPSESSID。然后,它会使用该ID查找与您的访问相关的会话数据。

答案 1 :(得分:1)

PHP将cookie存储在用户的浏览器中。该cookie不存储任何会话数据,它只是唯一标识用户。会话数据存储在服务器上,并与用户的cookie相关联。

因此,当用户发出请求时,存储在cookie中的会话ID将与请求一起传递。服务器可以使用该会话ID来检索实际会话数据并使其可用于PHP脚本。

答案 2 :(得分:1)

它实际上是基于服务器的文件。当您调用session_start()时,PHP会在您的服务器硬盘上创建一个文件,其中包含您在该会话中存储的任何内容。在客户端,他们获得一个cookie(默认名称为PHPSESSID),其中包含与该文件对应的随机字符串。然后,PHP使用随机垃圾收集来删除旧的会话文件。如果你希望你的会话持续时间超过php.ini中的超时,你可以创建自己的会话处理程序,以便将它们存储在诸如memcached或数据库之类的内容中。

以下是PHP网站上与之相关的部分 http://www.php.net/manual/en/session.configuration.php

答案 3 :(得分:0)

是 - 可能“会话[数据存储]在客户端计算机上”。

会话数据通常存储在服务器端(使用客户端提供的标识符,通常是cookie形式),没有理由为什么会话数据必须存储在服务器端以实现相同的语义 1

会话提供商可以直接将所有会话数据存储在Cookie中。这意味着所有会话数据都可以存储在客户端;并且有这样的提供者。

然而,“安全”使用cookie存储工作要大得多;即加密和MAC是所需的最小添加量。 (见Storing Session Data In Cookies: Problems And Security Concerns To Be Aware Of。)


1 实际上,会话数据的唯一“要求”是,在浏览器会话中,所有窗口/选项卡必须(能够)共享相同的会话数据。 Cookie是最简单的方法,因为它们是根据某些规则为每个HTTP请求传输的。