HTML-форма чувствительна к регистру
Это может быть довольно странный вопрос, но когда я захожу на свою веб-страницу, это работает, даже если я пишу все ЗАГЛАВНЫМИ БУКВАМИ. Во всяком случае, я сделал функцию "убить" на странице (ролевая игра, в которой вы можете убивать других). И я попытался сделать простую функцию, чтобы вы не могли убить себя. Вот код:
if ("$killuser"=="$user") {
echo "You can't kill yourself!";
}
$ user = текущий пользователь вошел в систему, пытаясь использовать функцию
$killuser = Ввод в форме HTML (пользователь, которого вы пытаетесь убить)
Проблема в том, что если мое имя пользователя "Пользователь", и я пытаюсь убить "Пользователь", оно говорит, что я не могу покончить с собой, но если я напишу его прописными буквами, или НЕ ТОЧНО, поскольку оно хранится в базе данных, это и я смогу убить себя. Кстати, таблица имени пользователя в базе данных - это VARCHAR, а сопоставление - utf8_general_ci.
4 ответа
Преобразуйте обе переменные в нижний регистр, а затем сравните его:
if ( strtolower($killuser) == strtolower($user)) {
echo "You can't kill yourself!";
}
В качестве альтернативы, вы также можете использовать strcasecmp()
:
if (strcasecmp($killuser, $user) == 0) {
echo "You can't kill yourself!";
}
Попробуйте использовать strcasecmp
if (strcasecmp($killuser, $user) == 0) {
echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
if (strtolower($killuser) == strtolower($user)) {
echo "You can't kill yourself!";
}
просто сделайте все строчными, и у вас не будет проблем.
Попробуйте это без кавычек
if ($killuser == strtolower($user)) {
Это сделает это в более низких заглавных буквах