我正在使用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.";
}
结果为“用户名或密码错误”,表示密码错误。如果存在多个变体,则两个帐户的密码都不起作用。