页面无法识别会话

时间:2013-05-14 20:56:50

标签: php session

我遇到了一些我无法解决的问题。  我在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");
?>

这是此页面上的整个代码。它总是打印出“你现在还没有登录。”在login.php页面中将$_SESSION['user']指定为true,并且在session_start();打开后立即在页面的开头设置<?php。 会话变量在所有其他具有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");
?>

3 个答案:

答案 0 :(得分: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行(用于调试)。

答案 1 :(得分:0)

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

答案 2 :(得分: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.";
}