0

这可能是一个相当奇怪的问题,但是当我登录我的网页时,它可以工作,即使我全部用大写字母写。无论如何,我在页面上做了一个“杀戮”功能(角色扮演游戏,你可以杀死别人)。而且我试着做一个简单的功能,让你无法自杀。这是代码:

        if ("$killuser"=="$user") {
        echo "You can't kill yourself!";
        }

$user = 当前用户登录,尝试使用该功能

$killuser = HTML 表单中的输入(您要杀死的用户)

问题是,如果我的用户名是“用户”,并且我试图杀死“用户”,它说我不能杀死自己,但是如果我用大写字母写它,或者不完全像它存储在数据库中那样,它就赢了't,我将能够自杀。顺便说一下,数据库中的用户名表是一个VARCHAR,排序规则是utf8_general_ci。

4

4 回答 4

3

将两个变量都转换为小写,然后进行比较:

if ( strtolower($killuser) == strtolower($user)) {
    echo "You can't kill yourself!";
}

或者,您也可以使用strcasecmp()

if (strcasecmp($killuser, $user) == 0) {
    echo "You can't kill yourself!";
}
于 2013-09-03T19:56:08.510 回答
1
if (strtolower($killuser) == strtolower($user)) {
    echo "You can't kill yourself!";
}

只需将所有内容都设为小写,您就不会遇到问题。

于 2013-09-03T19:58:23.503 回答
1

尝试使用strcasecmp

if (strcasecmp($killuser, $user) == 0) {
    echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
于 2013-09-03T19:59:51.433 回答
0

试试这个不带引号

if ($killuser == strtolower($user)) {

这将使它成为较低的大写字母

于 2013-09-03T19:56:28.503 回答