如何打印当前设置的所有会话变量?

Posted

技术标签:

【中文标题】如何打印当前设置的所有会话变量?【英文标题】:How to print all session variables currently set? 【发布时间】:2011-03-20 21:13:54 【问题描述】:

不必按名称调用每个会话变量,有没有办法显示当前设置的所有会话变量的内容?

【问题讨论】:

【参考方案1】:
echo '<pre>';
var_dump($_SESSION);
echo '</pre>';

如果您不关心类型,也可以使用print_r。如果你使用print_r,你可以将第二个参数设为TRUE,这样它就会返回而不是回显,对...有用...

echo '<pre>' . print_r($_SESSION, TRUE) . '</pre>';

【讨论】:

OP 正在询问所有会话。 @kiamlaluno 你的意思是每个用户的会话? 标题为“如何打印当前在 php 中设置的所有会话?”;如果所有 OP 想要打印当前会话,那么问题写错了。 @kiamlaluno 我认为他想要的可以从问题中得出。标题似乎说他想要为每个会话设置所有会话,但是,问题主体说他想要它们而不必按名称调用每个会话,我认为这将是 $_SESSION 中的关键。虽然他可能指的是 cookie 中分配的哈希值,但我认为前者似乎更有可能。 @kiamlaluno 我已经编辑了这个问题,所以更准确地说出他真正想知道的内容。【参考方案2】:
<?php
    session_start();
    echo "<h3> PHP List All Session Variables</h3>";
    foreach ($_SESSION as $key=>$val)
    echo $key." ".$val."<br/>";
?>

【讨论】:

这是一个更好的解决方案,它只打印内容而不是额外的数组废话。 对我不起作用。存储在会话中的对象(即日期)不回显。【参考方案3】:

不是一个简单的方法,不。

假设“活动”是指“尚未超过最大生命周期”并且没有被显式销毁并且您正在使用默认会话处理程序。

首先,最大生命周期定义为 php.ini 配置,并根据会话中的最后一个活动进行定义。因此,“过期”机制必须读取会话内容以确定应用程序定义的过期时间。 其次,您必须手动读取会话目录并读取文件,我什至不知道它们的格式。

如果你真的需要这个,你必须实现某种自定义会话处理程序。见session_set_save_handler

还要考虑到,如果用户只是关闭浏览器或离开您的网站而没有明确退出,您将不会收到任何反馈。根据您认为会话“不活跃”的阈值的不活跃程度,您将获得的误报数量可能非常高。

【讨论】:

文件似乎是这种格式last_active|i:1280043940;,所以稍微拆分一下,我想我们可以生成一个列表(虽然不准确活动会话)跨度> 【参考方案4】:

这对我有用:-

&lt;?php echo '&lt;pre&gt;' . print_r($_SESSION, TRUE) . '&lt;/pre&gt;'; ?&gt;

感谢分享代码...

Array
(    
    [__ci_last_regenerate] => 1490879962

    [user_id] => 3

    [designation_name] => Admin
    [region_name] => admin
    [territory_name] => admin
    [designation_id] => 2
    [region_id] => 1
    [territory_id] => 1
    [employee_user_id] => mosin11
)

【讨论】:

这很好地列出了所有 $_SESSION 变量。【参考方案5】:

您可以使用以下代码。

print_r($_SESSION);

【讨论】:

问题是询问所有会话,而不仅仅是当前会话【参考方案6】:
session_start();
echo '<pre>';var_dump($_SESSION);echo '</pre>';
// or
echo '<pre>';print_r($_SESSION);echo '</pre>';

注意:session_start();行是必须的,那么只有你才能打印价值 $_SESSION

【讨论】:

【参考方案7】:

将会话对象作为 json 回显。我喜欢 json,因为我有一个可以很好地格式化 json 的浏览器扩展。

session_start();
echo json_encode($_SESSION);

【讨论】:

以上是关于如何打印当前设置的所有会话变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何从不同的会话中获取 Windows 环境变量的当前值

如何保存当前python会话中的所有变量?

如何保存当前python会话中的所有变量?

如何在不注销的情况下清除所有会话变量

servlet 上的全局变量。对所有会话是全局的,还是仅对当前会话? [复制]

如何清除所有会话变量而不退出