PHP 将每个用户的会话数据存储在服务器上的临时文件夹中。此文件夹在 php.ini 配置文件中的变量 session.save_path 下定义。从 php.ini 文件中找到此值,或者使用以下命令创建一个 php 文件:
<?php echo "Session Save Path: " . ini_get( 'session.save_path');?>
因为它是内容,然后在浏览器中打开该文件。
找到会话数据的保存路径后,打开该文件夹,您会注意到一个相当简单的结构。所有会话都以以下格式存储:sess_$SESSIONID 。
会话数据在存储在磁盘上之前会进行序列化。因此,存储在会话文件中的对象必须先反序列化才能使用。但是,如果您使用按原样存储的纯文本来存储会话数据(例如)以存储有关用户的信息,那么从文件中解析出要查找的数据应该足够容易。$_SESSION['userid'] = 1234
还有一件事...我还没有研究过它,但它似乎出现在文件名中的会话ID直接对应于例如存储在用户计算机上的PHPSESSID cookie的名称。因此,考虑到这一点,可以遍历临时会话目录中的文件,获取所有$SESSIONID值,使用设置当前会话ID,启动会话并通过PHP访问所需的数据,而无需解析内容文件本身。谁能确认这是否可能?session_id($SESSIONID)
session_start()
编辑:调整了帖子以匹配Itay的评论。