php - echo $_SESSION 然后取消设置

我知道这是一个业余问题,但我需要回显一个 session 变量然后销毁该变量。

我已经试过了:

if(isset($_SESSION['m'])){
   echo($_SESSION['m']);
   unset($_SESSION['m']);
}

我也试过 session_destroy();

并且我尝试在页面末尾取消设置/销毁 session (在关闭 HTML 标记之后)

我遇到的问题是 session 在回显之前被销毁。我之前使用上面的代码没有任何问题。无论如何我需要做的是什么,还是我必须找到不同的解决方案?

提前致谢:)

最佳答案

我知道有点晚了,但最近我遇到了这个问题,我会为任何需要它的人回答。

我很确定您使用 header 方法重定向到执行 session unset 的同一页面。沿着这些线的东西:

<?php
    if(condition)
        $_SESSION = "foo";
    header("Location: $self");
?>
<html>
    ...
    <?php echo $_SESSION["foo"]; unset($_SESSION["foo"]); ?>
    ...

header 的问题在于它不会停止脚本的执行(看起来如此),因此脚本会继续执行并取消设置 session 。

解决方案是在 header 重定向后添加 exit(0)(或您可能需要的任何标志),如下所示:

<?php
    if(condition)
        $_SESSION = "foo";
    header("Location: $self");
    exit(0);
?>

这确实是一个非常晦涩难懂的问题,也是一个耗时的问题。

https://stackoverflow.com/questions/6563928/

相关文章:

r - 安装 Rstem 包的问题

python - 在 PYTHON 中使用 POUND SIGN 作为字符串?

objective-c - 使用 NSRegularExpression 将每个匹配项替换为方法的结

vb.net - 计算visual basic中两个日期之间的工作日数

css - 当类名只是一个整数时,如何编写 CSS 选择器?

sql - oracle如何获取最新的员工记录?

perl - 如何在 Perl 中创建一个新文件?

php - 如何用PHP生成每月的天数?

c# - 如何从列表框 C# 中删除选定的项目

wix - 在 WIX 安装程序中检查 RAM