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