PHP会话不在屏幕之间持久化

时间:2013-08-20 10:57:02

标签: php mysql session session-variables

我遇到了一个让我很困惑的问题。 我正在使用PHP和MySQL在登录屏幕上工作。我设法验证数据库中现有用户的用户名和密码,然后启动会话,并将会话变量username设置为登录屏幕中提供的用户名。

    $username = html($_POST['username']);
    $password = html($_POST['password']);

    $result = $pdo->prepare('SELECT * FROM users WHERE username = :username  AND    password = :password');
    $result->bindValue(':username', $username);
    $result->bindValue(':password', $password);
    $result->execute();

    foreach($result as $user)
    {
        $count = $count + 1;
    }

    if ($count == 1)
    {
              session_start();
          $_SESSION['username'] = $username;
       ` //if I do an echo $_SESSION['username'] it displays the correct user
          header('Location: .');
          exit();`
    }

然而,当它将我转移到index.php页面时,$_SESSION['username']变量已经消失,我不明白为什么。这是我在index.php中使用的代码,用于检查用户名:

<p><a href="view.php">View all tasks</a></p>
<p><a href="form.php?add">Add your own task</a></p>

<p>Welcome, <?php echo $_SESSION['username']; ?></p>

但是我收到以下错误:Notice: Undefined variable: _SESSION in C:\xampp\htdocs\abcabcabc\index.php on line 16

所有建议将非常感谢人

3 个答案:

答案 0 :(得分:0)

sesssion_start()添加到使用会话的所有脚本

答案 1 :(得分:0)

您必须在index.php文件的开头使用session_start();

答案 2 :(得分:0)

前2个答案是正确的。您必须在每个页面上启动会话。我通常只是将它放在每个页面中“包含”的文件中(如头文件),所以我不必考虑它。