在php中使用错误的密码登录成功

时间:2012-06-06 15:47:51

标签: php password-protection login-script

我正在创建一个登录页面。 下面的代码是当用户填写用户名和&密码输入字段。

但如果我输入用户名为'admin'且密码错误,它仍会接受并重定向到会员页面。

请注意我刚开始使用PHP。

$input['user'] = htmlentities($_POST['username'], ENT_QUOTES);
$input['pass'] = htmlentities($_POST['username'], ENT_QUOTES);

if ($stmt = $mysqli->prepare("SELECT * FROM members WHERE username=? AND password=?"))
{
    $stmt->bind_param("ss", $input['user'], md5($input['pass'] . $config['salt']));
    $stmt->execute();
    $stmt->store_result();

    if ($stmt->num_rows > 0)
    {
        //successful login/set session
        $_SESSION['username'] = $input['user'];
        header("Location: members.php");
    }
    else
    {
        $error['alert'] = "Error: Username/password incorrect!";
        include('views/v_login.php');
    }
}
else
{
    echo "Error: Could not prepare MySqli result.";
}

3 个答案:

答案 0 :(得分:1)

$input['pass'] = htmlentities($_POST['username'], ENT_QUOTES);

更改为

$input['pass'] = htmlentities($_POST['password'], ENT_QUOTES);

虽然从逻辑上说这个错误不应该让你使用bum密码,但它应该拒绝任何密码与用户名不同的尝试

答案 1 :(得分:0)

看一下,这就搞定了

变化:

$stmt->num_rows > 0

要:

$stmt->num_rows == 1

首先,没有描述您的数据库是什么样的,所以谁知道有多少结果。此外,如果每个用户有1次登录,则该结果应该只包括1行。

答案 2 :(得分:0)

只是为了更新.. 现在已修复,这是我的愚蠢错误用户名&顶部的密码

$input['user'] = htmlentities($_POST['username'], ENT_QUOTES);
$input['pass'] = htmlentities($_POST['password'], ENT_QUOTES);

另外,我在IF ELSE条件下通过适当的比较来修复它,如

$stmt->num_rows != 0

感谢大家:)