【问题标题】:Why session is not destroyed, after i destroy it in my logout.php page?为什么在我的 logout.php 页面中销毁会话后会话没有被销毁?
【发布时间】:2015-08-16 21:26:23
【问题描述】:

我已在所有页面中包含的文件中启动会话 (session_start())。我的 logout.php 链接在此文件中,稍后我将发布包含文件的代码,以及我的 logout.php 页面的代码。

注销后,一切正常,但如果我在我的管理按钮上单击超过 2-3 次(仅当 $_session['user1'] 和 $_session['pass'] r 正确时才应处于活动状态)我进入 admin.php 页面(在我销毁会话 oO 之后);

我包含的文件的一部分到所有页面:

<?php
session_start();

    if ((!isset($_SESSION['user1']))&&(!isset($_SESSION['pass1'])))  {
            echo "<li><a href='login.php'>Admin</a></li>";
    } 
    else {
            echo "<li><a href='Admin.php'>Admin</a></li>";
    };

?>

退出页面:

<?php
session_start();
unset ($_SESSION['user1'],$k);
unset ($_SESSION['pass'],$p);
session_destroy();
header('Location:Naslovna.php');
exit();
?>

【问题讨论】:

  • exit() 有必要吗?
  • 好吧,我认为 exit() 应该在标题之后...所以其余代码不会执行,但在这种情况下我认为没有必要。

标签: php session


【解决方案1】:

我最近遇到了这个问题,用这个解决了:

unset($user1,$pass);
session_unset();
session_destroy();
header('Location: ../index.php');

【讨论】:

  • 好吧,它与我之前所做的相似,无论如何,当我这样做时,首先尝试在登录页面上按下管理按钮(就像它应该没有设置会话一样),第二次尝试导致登录页面也是如此,但是当我第三次按下管理按钮时,它会导致管理页面,可能是因为 firefox 的现金,或者 w/ei 没有更多的想法,tnx 反正...
【解决方案2】:

根据documentation

session_destroy() 销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话 cookie。要再次使用会话变量,必须调用 session_start()。

如果您想真正销毁会话,您必须自己取消设置会话 cookie。

【讨论】:

  • tnx 的评论,我现在看到了文档,我试图取消设置会话,你可以在底部看到我的评论,我没有更多的想法,我猜 cookie 还在那里,你可以看到我的问题仍然存在。
猜你喜欢
  • 2016-08-09
  • 2016-12-24
  • 2011-11-25
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2011-11-06
相关资源
最近更新 更多