如果否则别的工作不起作用

时间:2016-06-10 02:30:48

标签: php mysql

我不太确定我在这里缺少什么。

while($row = $result->fetch_assoc())
    {
        // Makes sure input from uid matches database entry
        if($user == $row['first'])
        {
            if($pass == $row['password'])
            {
                echo "Logged in";
                include "cookie.php";
            }
            else 
            {
                echo "Failed login";
            }
        }
        else
        {
            echo "Failed login";
        }
    }

我相信这是问题所在,尽管我无法确切地告诉问题究竟是什么。它用于在用户名($ user)错误时提供失败的登录消息。我希望页面在两者中的任何一个不正确时显示消息。密码错误时回复正常,但如果用户名不正确,则没有任何反应。

2 个答案:

答案 0 :(得分:2)

为什么登录过程如此复杂?当简单的SQL Query可以执行此操作时:

SELECT * FROM your_table where first = $user AND password = $pass

你甚至不需要获取记录,你可以只计算&那样做。

这样,假设您在表中的first列上是唯一的,如果匹配(身份验证成功),您将只获得1行,如果不匹配,则只获得1行(身份验证失败)。 无需循环播放if / else条件阻止。

答案 1 :(得分:-1)

您可能希望指定默认消息,如下所示:

$message   = "Failed login";
while($row = $result->fetch_assoc()){
    // Makes sure input from uid matches database entry
    if($user == $row['first']) {
        if($pass == $row['password']) {
            $message = "Logged in";
            include "cookie.php";
        }else{
            $message = "Failed login";
        }
    }else{
        $message     = "Failed login";
    }
    echo $message;
}