Да, используйте функцию strtolower .Просто нужно сделать что-то вроде этого:
if(strtolower($username) == strtolower($usernameEntered))
Что касается isset () и empty () Они действительно разные, но часто они дают одинаковый результат. isset () сообщает вам, была ли переменная вообще установлена (но она все еще может не иметь значения). empty () в общем говорит, равна ли переменная чему-либо.Смотрите документацию по PHP, с которой я связан для каждого.Я бы не советовал использовать empty () для проверки файлов cookie и значений GET / POST, потому что пустые строки и 0 считаются пустыми, что, вероятно, не то, что вам нужно.Я бы использовал isset (), чтобы увидеть, установлена ли переменная, а затем проверил ее на предмет данных, которые вы ищете.Часто вы хотели бы иметь дело с пустой строкой иначе, чем без значения.
Кроме того, Пекка упомянул в комментарии, что если вы находите учетную запись в базе данных на основе имени пользователя, то вы действительнонужно сделать преобразование в нижний регистр там.Если так:
SELECT * FROM users WHERE LOWER(username) = LOWER(:username)
Предполагается, что вы используете подготовленный запрос с PDO.В противном случае просто замените вашу переменную, где у меня есть :username
(с правильной конкатенацией строк и т. Д., Конечно.Подобный запрос был бы действительно плохой идеей, потому что он должен был бы преобразовать каждое имя пользователя в таблице в нижний регистр для сравнения и сделать любой индекс в поле бесполезным.Гораздо лучшим способом было бы хранить строчную версию имени пользователя в базе данных, а также индекс на поле.Когда пользователь пытается войти в систему, преобразуйте введенные данные в нижний регистр, а затем выполните сравнение с ним.