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)) {

Это сделает это в более низких заглавных буквах

Другие вопросы по тегам