0

我遇到了一些我长期以来无法解决的问题。我在 php 中创建了一个脚本来取消设置一个会话变量,但是页面统计了会话这是我的页面代码:

    <?php
session_start();

require_once("../header.php");
    if($_SESSION['user']) {

    unset($_SESSION['user']);
        echo "you succesfully logged out.";
        header("Refresh:5; url=http://www.webmasteroutlet.com");


    } else {    
        echo "you are already NOT LOGGED IN right now.";
    }
require_once("../footer.php");
?>

这就是这个页面上的全部代码。它总是打印出“你现在还没有登录”。 $_SESSION['user']在 login.php 页面中分配了 true ,我session_start();在页面的最开始就在<?php打开之后。session 变量在所有其他带有 php 扩展名的文件中都被识别,这是唯一一个它不工作的文件。我也试过

<?php 
session_start();
echo $_SESSION['user'];
?>

它不打印任何东西。它只是跳过那一行,什么也不做。我究竟做错了什么 ?非常感谢您的帮助。这是 header.php 代码

<?php 
session_start();
require("config.php"); // that only contains connection to the database and it is successful.

if(isset($_SESSION['user'])==1){
                    echo "<div id=\"topnav\" class=\"topnav\"><a href=\"#\" class=\"signup\"><span>".$_SESSION['username']."</span></a>  <a href=\"http://www.webmasteroutlet.com/users/logout.php\" class=\"signup\"><span>LOGOUT</span></a></div>";
                }
            else    if ($_SESSION['admin']) {
                    echo "<div id=\"topnav\" class=\"topnav\">"."<a href=\"#\" class=\"signup\"><span>".$_SESSION['adminusername']."</span></a>  ";
                    echo "<a href=\"http://www.webmasteroutlet.com/admin/adminlogout.php\" class=\"signup\"><span>LOGOUT</span></a></div>";
                }
            else     if ( !isset($_SESSION['user'])) {
                    require ($_SERVER['DOCUMENT_ROOT']."/users/login.php");
                }


require("search.php");
?>
4

3 回答 3

0

我认为您需要设置 if 并确保将会话数据传递到此页面,这看起来像是您取消设置

于 2013-05-14T21:19:21.603 回答
0

尝试这个:

<?php
session_start();

require_once("../header.php");
if(isset($_SESSION['user'])) {

echo "User.".$_SESSION['user']." you are being logged out";
unset($_SESSION['user']);

    header("Refresh:5; url=http://www.webmasteroutlet.com");


} else {    
    echo "You are not logged or var SESSION doesnt exist";
}
require_once("../footer.php");
?>

如果仍然不起作用,请尝试删除 require_once 行(用于调试)。

于 2013-05-14T21:04:40.490 回答
0

贾斯汀,我认为你没有设置$_SESSION['user']. 这就是为什么你在 vardump 时得到 NULL 的原因。

尽管我仅限于您提供的脚本,但另一种可能性是您使一个人可以$_SESSION['admin']通过$_SESSION['user']. 如果是这种情况,您必须将脚本更改为:

if(isset($_SESSION['user'])) {
    unset($_SESSION['user']);
    echo "user succesfully logged out.";
}elseif(isset($_SESSION['admin'])){
    unset($_SESSION['admin']);
    echo "admin succesfully logged out.";
}else{    
    echo "you are already NOT LOGGED IN right now.";
}   
于 2013-05-14T21:22:17.630 回答