我的登录系统上的用户名不区分大小写吗?

时间:2019-07-15 04:42:46

标签: php mysql pdo

我正在使用PHP 7.3和MySQL 5.7

我的登录系统不区分大小写。例如,如果我有一个名为Bob的帐户,则可以同时使用bob和Bob登录该帐户。 此外,当我创建一个名为bob的第二个帐户(所以现在有一个小写字母和一个大写字母)并且尝试登录时,我只能登录Bob而不登录bob。将第一个帐户(Bob)重命名为其他名称时,我便可以登录到第二个帐户bob。

我还应该注意,帐户1和帐户2的密码不同。

我从来没有遇到过这个问题,我不确定是什么原因造成的。

if (isset($_POST['name']) && isset($_POST['password'])) {
    $name = $_POST['name'];
    $password = $_POST['password'];
    if (!\ctype_alnum($name)) {
        $errors[] = "Invalid username.";
    }
    if(empty($errors)) {
        $fetchUser = $db->prepare('SELECT id, password FROM accounts WHERE name = :name');
        $fetchUser->bindParam(':name', $name, PDO::PARAM_STR);
        $fetchUser->execute();
        $fetchUser = $fetchUser->fetch(PDO::FETCH_OBJ);

        if (password_verify($password, $fetchUser->password)) {
            // log them in
        } else {
            $errors[] = "Wrong username or password.";
        }
    }
} else {
    $errors[] = "Missing fields.";
}

结果为“用户名或密码错误”,表示密码错误。如果存在多个变体,则两个帐户的密码都不起作用。

0 个答案:

没有答案