0

我有一个指向另一个 php 页面的登录页面。这个 php 页面获取用户输入的用户名,将其存储为会话变量,然后重定向到 home.php(此代码在信息验证后运行)。

    $username = $_POST['username'];
    $update = mysql_query("UPDATE usertable SET loginStatus='Logged in' WHERE userName = '$username'");
    session_start();
    $_SESSION['loggedin'] = true;
    $_SESSION['username'] = $_POST['username'];
    header("Location: home.php");

这将更新相应的列而不会出现问题。我将以下代码放在 home.php 页面中以显示每个用户的登录状态

    session_start();
    $username = $_SESSION['username'];
    if(empty($_SESSION['username'])){
    header("Location: login.php");
    }

    $result = mysql_query("SELECT * FROM usertable");
    echo "Logged in as ". $_SESSION['username'];
    echo "<br />";
    while($row = mysql_fetch_array($result))
    {
    echo $row['userName'] . " " . $row['emailAddress'] . " " .$row['loginStatus'];
    echo "<br />";
    }

    ?>

    <p><a href=logout.php>Click here to logout</a></p>

当用户单击注销链接时,它会将他们定向到以下 php 页面:

    <?php
    session_start();
    $username = $_SESSION['username'];
    $update1 = mysql_query("UPDATE usertable SET loginStatus='' WHERE userName = '$username'");
    echo $username;
    ?>
    <?php
    session_destroy();
    ?>
    <h1>You are now logged out</h1>
    <p><a href=login.php>login</a></p>     

这就是我的问题所在。MySQL 没有更新相应用户名的 loginStatus。我拥有的所有变量 ($username, $username1) 在我测试它们时都会打印出正确的信息。在注销页面的情况下,我知道 $_SESSION['username'] 正在存储正确的用户名,但我不知道为什么它不会更新数据库中的值。

4

2 回答 2

0

您的问题到底在哪里??...登录时的数据库更新或 home.php 页面上的数据库获取或注销页面上的数据库更新...还有多少次您启动会话所有三个页面都具有会话启动功能。

于 2013-03-11T15:48:53.797 回答
0

如果这是您的页面的全部内容,则您可能没有数据库连接。至少检查查询的返回值

$update1 = mysql_query("UPDATE usertable SET loginStatus='' WHERE userName = '$username'") or die(mysql_error());

你应该看到真正的原因。

此外,您应该考虑切换到mysqlior PDO,因为mysql_*现在不推荐使用函数。

于 2013-03-11T15:50:17.560 回答