我想知道是否有人可以帮助我解决我在使一段代码正常工作时遇到的问题? 到目前为止,我已经花了几个小时,尽管它看起来很简单,但它不会配合使用:(
这是一个简单的登录页面,目前我要做的就是对照数据库中存储的名称和密码检查输入的名称和密码,以查看它们是否存在,并在它们匹配时授予访问权限。 该部分工作正常,但随后出现的elseif部分则什么也没做。
elseif应该回显一条消息,提示其用户名或密码不匹配,但没有任何反应-单击具有错误详细信息的提交时,页面似乎已提交,但未出现该消息。 问题可能出在所有循环中吗?
很抱歉,如果这是一个愚蠢的问题,或者以前已经被回答过,那会让我有点发疯。
非常感谢任何可以帮助我的人,非常感谢:)
P.S。我也尝试过使用(mysqli_num_rows($ query)== 0)来检查数据库中的输入值,但这似乎没有什么不同。
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result=mysqli_query($connection,$query);
while($row=mysqli_fetch_assoc($result)) {
$dbusername = $row['username'];
$dbpassword = $row['password'];
//Check to see if posted values equal db values
if ($dbusername == $username && $dbpassword == $password) {
echo "Hello " . $dbusername."!";
} //else, check to see that either of the posted values don't match db values
elseif ($dbusername !== $username || $dbpassword !== $password)
{
echo "Sorry, your username or password don't match";
} //end elseif
} //end while loop
} //end submit check
答案 0 :(得分:1)
首先,代码存在严重的安全问题。 请阅读以下内容:What is SQL injection?
elseif
中的代码永远不会执行,因为如果输入错误的用户名和密码,查询结果将为空,因此您永远也不会进入循环。