会话变量未进入另一个内部文件 PHP

Session variable not getting in another inner file PHP

我有一个登录表单,当用户输入用户名和密码时,它会指向 login.php 文件

session_start();
if ( isset( $_POST['username'], $_POST['password'] ) ) {  
    $user   = $_POST['username'] ;
    $pass   = $_POST['password'] ;
    $query  = " MY QUERY "; 
    $result = mysql_query($query) or die('SQL ERROR:'.mysql_error()); 
    $row    = mysql_fetch_assoc($result);   
    if ($row) {         
        echo "query successfull wrote to DB";       
        unset($_SESSION);
        $userName = $row['firstname'].' '.$row['lastname'];
        $_SESSION['userNameSession'] = $userName;
        $_SESSION['loginStatus']     = '1';
        header('location:admin/admin.php');
    }else{
        echo "unscccessful login";
        header('location:index.php');
    }
}

当我尝试通过 print_r($_SESSION) 从该文件中打印会话时.. 它显示了会话及其具有值

的变量
Array ( [userNameSession] => full name [loginStatus] => 1 )

在我的admin/admin.php(登录成功后打开)写

    session_start();
    print_r($_SESSION);exit;

如果尝试通过 print_r($_SESSION) 打印会话,它显示空数组为 Array()

请帮忙。

您必须注意的一件重要事情:

header前不要回显我觉得你的代码应该是这样的:

session_start();
if ( isset( $_POST['username'], $_POST['password'] ) ) {  
    $user   = $_POST['username'] ;
    $pass   = $_POST['password'] ;
    $query  = " MY QUERY "; 
    $result = mysql_query($query) or die('SQL ERROR:'.mysql_error()); 
    $row    = mysql_fetch_assoc($result);   
    if ($row) {       
        unset($_SESSION);
        $userName = $row['firstname'].' '.$row['lastname'];
        $_SESSION['userNameSession'] = $userName;
        $_SESSION['loginStatus']     = '1';
        header('location:admin/admin.php');
    }else{
        header('location:index.php');
    }
}

希望对您有所帮助。

你为什么要做unset($_SESSION)?这可能会导致会话变量被删除但会话仍然存在。

如果你想清理$_SESSION['LoginStatus']$_SESSION['userNameSession'],最好一个一个清理(虽然这不是必需的,因为你稍后会重写它的值):

unset($_SESSION['LoginStatus']);
unset($_SESSION['userNameSession']);

代码必须是这样的:

session_start();
if ( !empty($_POST['username']) && !empty($_POST['password']) ) {  
    $user   = $_POST['username'] ;
    $pass   = $_POST['password'] ;
    $query  = " YOUR QUERY "; 
    $result = mysql_query($query) or die('SQL ERROR:'.mysql_error());   
    if (mysql_num_rows($result) > 0) {        
        //DELETE prints BEFORE header()!! -> echo "query successfull wrote to DB"; 
        $row = mysql_fetch_assoc($result);

        unset($_SESSION['userNameSession']);
        unset($_SESSION['loginStatus']);

        $userName = $row['firstname'].' '.$row['lastname'];

        $_SESSION['userNameSession'] = $userName;
        $_SESSION['loginStatus']     = '1';

        header('location:admin/admin.php');
    }else{
        //DELETE prints BEFORE header()!! -> echo "unscccessful login";
        header('location:index.php');
    }
}