PHP中的$ _SESSION列表

6 php

我想从localhost获取会话列表.所以,我写道

session_start();
print_r($_SESSION);
Run Code Online (Sandbox Code Playgroud)

目前访问的人是两个.一个是来自另一台PC,最后一个是托管pc.But显示只有托管的pc会话.实际上我想得到所有会话用户列表.

Ali*_*xel 12

这可以通过以下代码轻松完成:

<?php

$sessions = array();

$path = realpath(session_save_path());
$files = array_diff(scandir($path), array('.', '..'));

foreach ($files as $file)
{
    $sessions[$file] = unserialize(file_get_contents($path . '/' . $file));
}

echo '<pre>';
print_r($sessions);
echo '</pre>';

?>
Run Code Online (Sandbox Code Playgroud)

确保您了解执行(或允许)此操作的风险.

  • @PaulDinh:True ...然后你需要递归地映射文件,可能使用`RecursiveDirectoryIterator` SPL迭代器或类似的.=) (4认同)
  • 如果会话文件处于多个级别怎么办:http://www.php.net/manual/en/session.configuration.php#ini.session.save-path (3认同)

dec*_*eze 4

会话之间是相互隔离的。一个用户的会话无权访问另一用户的会话。该变量$_SESSION仅引用当前用户的会话。

我认为除了找出会话文件在磁盘上物理存储的位置并手动解析它们之外,没有其他方法可以访问不同用户的会话。请注意,这通常不是您想要做的事情。