PHP会话变量不起作用


PHP session variables wont work

我是一名PHP学习者,在PHP会话中遇到了一些问题。

我正在尝试做一个简单的登录测试,但当我指向另一个页面时,会话变量似乎不会跟随。两个重要文件:

检查登录:

 <html>
<head>
    <title>
        <?php
            session_start();
        ?>
    </title>
</head>
<body>
    <?php
        $connection = mysql_connect("localhost", "root", "root");
        if(!connection)
        {
            die("could not connect to the database");
        }
        mysql_selectdb("phplogin", $connection) or die ("MySQL error i valg af database: " .mysql_error());
        $query = "Select * from users where username='".$_POST['username']."' AND password = '".$_POST['userpass']."'";
        $result = mysql_query($query);
        $count = mysql_num_rows($result);
        if($count==1){
            $_SESSION['loggedIn'] = "true";
            echo "The variable: ".$_SESSION['loggedIn'];
            header("Location: loggedinPage.php");
            exit;
        }
        if(!$count == 1){
            header("Location:Login.php");
            exit;
        }
    ?>
</body>

访问页面:

 <html>
<head>
    <title>
        <?php
            session_start();
        ?>
    </title>
</head>
<body>
    <?php
        if($_SESSION['loggedIn'] != "true"){
            echo "You are NOT logged in";
            echo $_SESSION['loggedIn'];
            exit;
        }
            echo $_SESSION['loggedIn'];
            echo "You are logged in";
    ?>
</body>

即使你提供了正确的用户和密码,当被引导到新页面时,它仍然会显示你没有登录。另一件事是"标题(位置:等等)",这不起作用,我必须手动重定向。

有什么帮助吗:)?-David


谢谢,我现在可以登录了,但重定向仍然不起作用?我的文件现在是这样的:

 <?php
    session_start();
    ?>
    <?php
        $connection = mysql_connect("localhost", "root", "root");
        if(!connection)
        {
            die();
        }
        mysql_selectdb("phplogin", $connection) or die ("MySQL error i valg af database: " .mysql_error());
        $query = "Select * from users where username='".$_POST['username']."' AND password = '".$_POST['userpass']."'";
        $result = mysql_query($query);
        $count = mysql_num_rows($result);
        if($count==1){
            $_SESSION['loggedIn'] = "true";
            header("Location: loggedinPage.php");
        }
        if(!$count == 1){
            header("Location:Login.php");
        }
    ?>

<head>
    <title>
    </title>
</head>
<body>
</body>

session_start()应该位于文档的最顶部,而header()只能在网站上进行任何输出之前执行。

在输出数据之前,您应该只打开会话或更改其内容。session_start应在任何输出和之前调用

<html>
...

输出。

也是如此

$_SESSION['loggedIn'] = "true";

将所有与登录相关的检查和初始化置于任何html 之上

与标题("位置…")相同-应该在输出之前

顺便说一句,我不会直接去

if($_SESSION['loggedIn'] != "true"){ ...

相反,我会检查它是否设置了

if(!isset($_SESSION['loggedIn']) || $_SESSION['loggedIn'] != "true"){ ...