PHP错误:代码始终返回相同的值

时间:2016-02-22 12:45:17

标签: php mysql mysqli

我已经使用此代码登录网站,但我的代码始终返回Onjuiste gegevens (不正确的数据)。我不知道为什么。

在我的数据库中,我创建了一个帐户,其中包含用户名:sander和密码:sander。当我在表格中输入时,我仍然可以获得" Onjuiste gegevens"。有人可以帮我解决这个问题吗?

<?php
$conn = mysqli_connect("localhost", "root", "", "login");


if (isset($_POST['inloggen'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $query = "SELECT * FROM users WHERE username = '$username' AND '$password'";

    $result = mysqli_query($conn, $query);

    if (mysqli_num_rows($result) == 1) {
        echo "Juiste gegevens!";
    } else {
        echo "Onjuiste gegevens!";
    }

    echo "<br />";
}
?>
<form method="post" action="">
    <label>Username</label>
    <input type="text" name="username"/><br />
    <label>Password</label>
    <input type="password" name="password"/><br />

    <input type="submit" name="inloggen" value="Inloggen"/>

</form>

4 个答案:

答案 0 :(得分:4)

您的query存在问题,您错过了password,应该是:

$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";

此外,您应该阻止MySQL Injection

$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

Controller Action了解mysqli_real_escape_string()的详情。

同时阅读MySQLi Prepared Statementshttp://www.w3schools.com/php/func_mysqli_real_escape_string.asp,这是阻止MySQL Injection的好方法。

提示:出于安全考虑,请记住存储密码哈希值。不要将它们存储为纯文本。

答案 1 :(得分:0)

您的查询逻辑错误,您忘记了password

SELECT * FROM users WHERE username = '$username' AND password='$password'

答案 2 :(得分:0)

您的查询无效。您忘记了数据库中的密码列。

$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";

除了查询错误之外,查询还是可以进行sql注入。

答案 3 :(得分:0)

试试这个

$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";

通过对帖子变量使用 mysqli_real_escape_string()来提高安全性。

mysqli_real_escape_string() - 转义字符串中的特殊字符以在SQL语句中使用

http://php.net/manual/en/mysqli.real-escape-string.php