php - 在 PHP 中循环遍历所有服务器的 session

标签 php session

在 PHP 中有没有办法获取服务器上所有 session (以及每个 session 中的变量)的列表?

基本上,我们有一个维护功能,需要知道哪些用户当前登录到站点。我们已经将每个用户的数据存储在一个 session 变量中,但我希望我可以遍历每个 session 并提取我需要的数据。

我的 PHP 非常有限(我通常是 .Net 开发人员),但如果有人知道这是否可行(以及如何实现),我将不胜感激。我用谷歌搜索了这个,我发现的结果往往表明这是不可能的,但我发现这很难接受。

不过,如果你做不到,你就做不到,但我认为我在 StackOverflow 上的 friend 可以给我一个明确的答案!

最佳答案

PHP 将每个用户的 session 数据存储在服务器上的一个临时文件夹中。此文件夹在变量 session.save_path 下的 php.ini 配置文件中定义。从您的 php.ini 文件中找到此值,或者创建一个包含以下内容的 php 文件:

<?php echo "Session Save Path: " . ini_get( 'session.save_path');?>

按其内容,在浏览器中打开文件。

找到 session 数据的保存路径后,打开该文件夹,您会发现一个相当简单的结构。所有 session 都以以下格式存储:sess_$SESSIONID。

session 数据在存储到磁盘之前被序列化。因此,存储在 session 文件中的对象在可用之前必须被反序列化。但是,如果您使用按原样存储的纯文本来存储您的 session 数据(例如 $_SESSION['userid'] = 1234)来存储有关您的用户的信息,它应该很容易从文件中解析出您要查找的数据。

还有一件事……我没有仔细研究过,但似乎出现在文件名中的 session ID 直接对应于例如存储在用户计算机上的 PHPSESSID cookie 的名称。因此,考虑到这一点,可以循环遍历临时 session 目录中的文件,获取所有 $SESSIONID 值,使用 session_id($SESSIONID) 设置当前 session ID,启动一个使用 session_start() 进行 session 并通过 PHP 访问您需要的数据,而无需自己解析内容文件。谁能确认这是否可行?

编辑:调整帖子以匹配 Itay 的评论。

关于php - 在 PHP 中循环遍历所有服务器的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675913/

相关文章:

c# - 如何使用 C# 上传文件并将其保存到流中以供进一步预览?

PHP:空白页上显示未定义

javascript - 使用 *.ini 配置文件通过 URL 更改 HTML 文本

php - 拉拉维尔 : Check if session exists necessary?

PHP 数据 session 存储

php - 从 PHP5.4.x 开始的 session 问题

security - 如何安全地进行跨域认证?

php - JS、PHP、MySQL获取大数据

php - 将 R 语言与 php 集成以从 R 中获取结果

php - 在 php 中上传时未选择文件