0

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

    $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

所有的建议将不胜感激

4

3 回答 3

0

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

于 2013-08-20T11:07:16.563 回答
0

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

于 2013-08-20T10:57:51.520 回答
0

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

于 2013-08-20T11:02:11.463 回答