$ _SESSIONvariables存储在哪里?

$_SESSIONvariables是存储在客户端还是服务器上?

$_SESSIONvariables存储的位置由PHP的session.save_pathconfiguration决定。 通常这是Linux / Unix系统上的/tmp 。 使用phpinfo()函数查看您的特定设置(如果不是100%确定的话),通过在您的域的DocumentRoot中创build包含此内容的DocumentRoot

 <?php phpinfo(); ?> 

这里是关于这个configuration设置的PHP文档的链接:

http://php.net/manual/en/session.configuration.php#ini.session.save-path

如前所述,内容存储在服务器上。 然而,会话由会话标识来标识,该会话标识存储在客户端并随每个请求一起发送。 session-id通常存储在cookie中,但也可以附加到url。 (这是您有时看到的PHPSESSID查询参数)

他们通常存储在服务器上。 他们存储在哪里取决于开发人员。 您可以使用session.save_handlerconfigurationvariables和session_set_save_handler来控制会话在服务器上的保存方式。 默认的保存方法是将会话保存到文件。 它们被保存的位置由session.save_pathvariables控制。

另外需要注意的是,如果“/ tmp”是存储会话数据的目录(这似乎是默认值),那么在重新启动Web服务器之后,会话将不会持续,如“/ tmp “通常在重新启动时清除。 客户端持久性的概念与服务器上存储的持久性有关,如果将“/ tmp”目录用于会话数据,可能会失败。

在Debian上(大多数Linux发行版不是这种情况?),它保存在/ var / lib / php5 /中。 如上所述,它是在你的php.ini中configuration的。

我正在使用Ubuntu,我的会话存储在/ var / lib / php5中。

正如泰勒先生指出的,这通常是在php.ini中设置的。 通常它们被作为文件存储在特定的目录中。

对于Ubuntu 16.10会话保存在/ var / lib / php / session / …

它是如何工作的? 它怎么知道这是我?

大多数会话在用户的计算机上设置用户密钥(称为会话ID),如下所示:765487cf34ert8dede5a562e4f3a7e12。 然后,在另一个页面上打开一个会话时,它会扫描计算机上的用户密钥并运行到服务器以获取您的variables。

如果您错误地清除了caching,那么您的用户密钥也将被清除。 由于您不知道您的ID,您将无法再从服务器获取variables。