我的PHP脚本正在执行if和else语句

我的PHP脚本正在执行if和else语句,php,if-statement,forum,Php,If Statement,Forum,我意识到这个问题以前已经得到了回答,但是每个问题都是针对每个人的代码的。如果有人能告诉我为什么if和else语句都在执行,我将不胜感激。该脚本是我正在开发的论坛软件的登录脚本的一部分。 谢谢 罗比 您正在从数据库中获取所有用户数据,请从论坛用户中选择*。如果有多个用户具有不同的名称或密码,则else语句将独立于用户名和密码输入执行,因为用户名和密码只能匹配数据库中的一个条目 您应该删除while循环,并将其替换为 $row = $query->fetch_array(); if ($row

我意识到这个问题以前已经得到了回答,但是每个问题都是针对每个人的代码的。如果有人能告诉我为什么if和else语句都在执行,我将不胜感激。该脚本是我正在开发的论坛软件的登录脚本的一部分。 谢谢 罗比


您正在从数据库中获取所有用户数据,请从论坛用户中选择*。如果有多个用户具有不同的名称或密码,则else语句将独立于用户名和密码输入执行,因为用户名和密码只能匹配数据库中的一个条目

您应该删除while循环,并将其替换为

$row = $query->fetch_array();
if ($row) {
    if (($row['username'] == $username) AND ($row['password'] == $password)) {
        $_SESSION['username']=$username;
        echo '<script language="javascript">';
        echo 'window.location.href = "../forum/"';
        echo '</script>';
    } else {
        echo '<script language="javascript">';
        echo 'window.location.href = "../forum/login?password=wrong"';
        echo '</script>';
    }
}

然后检查行数是否等于1。

-edit-在上面Simon的帖子中介绍了在查询中重新包含用户名和密码

。。。 然后只运行一次:

$row = $query->fetch_array();
if ($row) {
    $_SESSION['username']=$username;
    echo '<script language="javascript">';
    echo 'window.location.href = "../forum/"';
    echo '</script>';
} else {
    echo '<script language="javascript">';
    echo 'window.location.href = "../forum/login?password=wrong"';
    echo '</script>';
}

当您将凭据放入查询中时,您可以通过计算$query,或者获取一行并查看其返回是否正确(如果不正确),轻松确定用户名和密码是否匹配,用户名或密码错误。

您如何知道是否正在执行以及是否正在执行?您正在对论坛用户中的所有用户运行一个循环。假设一个匹配,其余的不匹配。您应该在sql查询中检查用户名和密码,并将查询限制为1,限制1并删除循环,因为您只能得到1或0个结果。是否需要根据输入的用户名和密码在select语句中添加一些where子句?同样有效,但Simon在您之前就做到了!
$secureUsername = mysql_real_escape_string($username);
$securePassword = mysql_real_escape_string($password);
$query = $connect->query("SELECT * FROM forum_users WHERE username='" . $secureUsername . "' AND password='" . $securePassword . "'");
$row = $query->fetch_array();
if ($row) {
    $_SESSION['username']=$username;
    echo '<script language="javascript">';
    echo 'window.location.href = "../forum/"';
    echo '</script>';
} else {
    echo '<script language="javascript">';
    echo 'window.location.href = "../forum/login?password=wrong"';
    echo '</script>';
}