php
  • mysql
  • 2013-03-11 46 views 0 likes 
    0

    我有一个登录页面指向另一个php页面。这个PHP页面接受用户输入的用户名,将其存储为会话变量,然后重定向到home.php(在验证信息后运行此代码)。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没有更新相应用户名的log​​inStatus。当我测试它们时,所有变量($ username,$ username1)都会输出正确的信息。在注销页面的情况下,我知道$ _SESSION ['username']正在存储正确的用户名,但我无法弄清楚为什么它不会更新数据库中的值。

    +0

    我看到你没有检查更新查询的结果;也许它是'假'?你可以回应查询,这看起来很奇怪吗? – 2013-03-11 15:46:15

    +2

    注销页面中的数据库conexion在哪里? – EmCo 2013-03-11 15:50:39

    +0

    从注销页面回显$ update1不会返回任何内容,如果这是您的意思? – TaylorSmolik 2013-03-11 15:51:13

    回答

    0

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

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

    你应该看到真正的原因。

    另外,您应该考虑切换到mysqliPDO,因为mysql_*函数现在已被弃用。

    0

    问题出在哪里??数据库更新登录或数据库抓取home.php页面或数据库更新注销页面......您开始会话多少次三个页面都有会话开始在他们的功能。

    +0

    更新注销页面是问题,我有一个印象,开始一个会话是必要的检索变量。 – TaylorSmolik 2013-03-11 15:50:03

    相关问题