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


69

不必按名称调用每个会话变量,是否可以显示当前设置的所有会话变量的内容?

Answers:


145
echo '<pre>';
var_dump($_SESSION);
echo '</pre>';

或者,print_r如果您不关心类型,也可以使用。如果使用print_r,则可以使第二个参数,TRUE以便返回而不是echo,对于...很有用。

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

3
OP正在询问所有会话。
kiamlaluno,2010年

@kiamlaluno您的意思是每个用户的会话?
alex

3
标题为“如何打印当前在PHP中设置的所有会话?”;如果OP想要的只是打印当前会话,则该问题写错了。
kiamlaluno

@kiamlaluno我认为他的要求可以从问题中得出。标题似乎表明他希望为每个会话设置所有会话,但是问题正文说,他希望他们不必按名称调用每个会话,我认为这是的关键$_SESSION。尽管他本来可以引用cookie中分配的哈希,但我认为前者似乎更有可能。
Alex

1
@kiamlaluno我已经编辑了问题,因此更确切地说是他真正想知道的内容。
PhoneixS

20
<?php
    session_start();
    echo "<h3> PHP List All Session Variables</h3>";
    foreach ($_SESSION as $key=>$val)
    echo $key." ".$val."<br/>";
?>

这是一个更好的解决方案,只打印内容而不打印多余的数组废话。
瑞安·沃克

没为我工作。会话中存储的对象(即日期)不会回显。
CrazyTim

5

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

假设“活动”是指“尚未通过最大生存期”,并且尚未明确销毁,并且您使用的是默认会话处理程序。

  • 首先,最大生存期定义为php.ini配置,并根据会话上的最后活动定义。因此,“到期”机制将必须读取会话的内容以确定应用程序定义的到期。
  • 其次,您必须手动读取会话目录并读取文件,这些文件的格式我什至都不知道它们在其中。

如果确实需要此功能,则必须实现某种自定义会话处理程序。请参阅session_set_save_handler

还应考虑到,如果用户只是关闭浏览器或离开站点而没有明确注销,则您将没有反馈。根据许多不活动情况,您认为将会话视为“不活动”的阈值,您将得到的误报数量可能会很高。


文件似乎采用这种格式last_active|i:1280043940;,因此,请稍作拆分,我认为我们可以生成一个列表(尽管活动会话不准确)
Alex

3

这对我有用:

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

感谢您分享代码...

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
)

1

您可以使用以下代码。

print_r($_SESSION);

3
问题是要求所有的会议,而不仅仅是当前的会议
mwhite

1

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

session_start();
echo json_encode($_SESSION);

0
session_start();
echo '<pre>';var_dump($_SESSION);echo '</pre>';
// or
echo '<pre>';print_r($_SESSION);echo '</pre>';

注意:session_start(); 那么只有一行才可以打印$ _SESSION值

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.