我正在尝试检查用户输入的用户名和密码是否与使用PDO的数据库中的条目匹配,但由于某种原因似乎无法使其正常工作。
数据库表名为user_info,我尝试从中获取用户名和密码的行分别为username
和pass
。我不完全确定如何检查用户输入的信息是否与数据库条目匹配,然后根据它返回true或false来决定发送它们的位置。
此外,我显然已经获得了先决条件,例如包含连接到数据库的文件,我知道其信息是正确的。
我在if ($username)
等黑暗中被刺了,但显然这是不正确的。
HTML
<form method="post">
<label for="username2">Username</label>
<input type="text" name="username">
<label for="password">Password</label>
<input type="text" name="password">
<input type="submit" value="Login" name="login">
</form>
PHP
$username = $_POST['username'];
$password = $_POST['password'];
try {
$result = $db->prepare("SELECT * FROM user_info WHERE username = :user AND pass = :pass");
$result->bindParam(':user', $username);
$result->bindParam(':pass', $password);
$result->execute();
$rows = $result->fetch(PDO::FETCH_NUM);
}
catch (Exception $e) {
echo "Could not retrieve data from database";
exit();
}
if ($username == "test" && $password == "test") {
$_SESSION['username'] = $username;
redirect('/add-property.php');
} else {
if (isset($_POST['login'])) {
echo "Username or password incorrect";
}
}
答案 0 :(得分:1)
您可以做的是在数据库中查找用户,然后从查询中返回行。在比较用户提供的用于进行身份验证的密码和查询返回的密码之后,将其返回到他们需要去的位置。
答案 1 :(得分:0)
要找到您的错误,请在代码中添加此代码而不是catch:
catch (PDOException $e) {
echo "Could not retrieve data from database ".$e->getMessage;
exit();
}
你也可以得到你的查询,以确保它是正确的:
echo $db->queryString;
答案 2 :(得分:0)
似乎($username == $rows && $password == $rows)
是我需要更改代码以正确验证用户名和密码。