如何检查用户名和密码匹配

时间:2014-06-24 02:34:49

标签: php mysql database pdo

我正在尝试检查用户输入的用户名和密码是否与使用PDO的数据库中的条目匹配,但由于某种原因似乎无法使其正常工作。

数据库表名为user_info,我尝试从中获取用户名和密码的行分别为usernamepass。我不完全确定如何检查用户输入的信息是否与数据库条目匹配,然后根据它返回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";
                    }
                }

3 个答案:

答案 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)是我需要更改代码以正确验证用户名和密码。