Во время проверки связки логин-пароль столкнулся со странным свойством:
введенный логин является регистроНЕзависимым, а пароль регистроЗАвисимым. Хотя для логина я нигде не использовал strtolower.
Например: в БД записаны логин (admin) и пароль (Pass_word).
- Комбинация admin - Pass_word, дает результат validated
- Комбинация ADMin - Pass_word, дает результат validated
- Комбинация admin - Pass_WORd, дает результат NOT validated
php-код
if (isset($_POST['login_btn'])) {
if ((!empty($_POST['login_login'])) && (!empty($_POST['login_pass']))) {
$login = trim(htmlspecialchars($_POST['login_login']));
$pass = trim(htmlspecialchars($_POST['login_pass']));
$remember = 0;
$remember = (!empty($_POST['remember']) ? 1 : 0);
if (!empty($arr = validate_login($login, $pass, $remember))){
echo "validated" ;
}
else{
echo "not validated";
}
}
else{
header("Location: /");
}
}
function validate_login($login, $pass, $remember){
global $handler;
$sql = "SELECT user_id,
user_account,
user_name,
user_pwd
FROM users
WHERE user_account = ?";
try {
$query = $handler->prepare($sql);
$query -> execute(array($login));
$result = $query->fetchAll(PDO::FETCH_ASSOC);
$query -> closeCursor();
if ((pwd_verification($pass, $result[0]['user_pwd'])) == TRUE){
return $result;
}
else {
return false;
}
} catch (Exception $e) {
echo "Ошибка с запросом";
return false;
}
}
function pwd_verification($pass, $login_pass){
if (($pass === $login_pass)) {
return true;
}
else{
return false;
}
}