这可能是一个相当奇怪的问题,但是当我登录我的网页时,即使我在资本中全部写完,它也能正常工作。无论如何,我在页面上做了一个“杀戮”功能(角色扮演游戏,你可以杀死其他人)。而且我试图制作一个简单的功能,让你无法自杀。这是代码:
if ("$killuser"=="$user") {
echo "You can't kill yourself!";
}
$ user =当前用户登录,尝试使用该功能
$ killuser = HTML表单中的输入(您要杀死的用户)
问题是,如果我的用户名是“用户”,并且我试图杀死“用户”,它说我不能自杀,但是如果我用大写字母写它,或者不完整,因为它存储在数据库中,它不会,我将能够自杀。顺便说一下,数据库中的用户名表是VARCHAR,排序规则是utf8_general_ci。
答案 0 :(得分:3)
将两个变量转换为小写,然后进行比较:
if ( strtolower($killuser) == strtolower($user)) {
echo "You can't kill yourself!";
}
或者,您也可以使用strcasecmp()
:
if (strcasecmp($killuser, $user) == 0) {
echo "You can't kill yourself!";
}
答案 1 :(得分:1)
if (strtolower($killuser) == strtolower($user)) {
echo "You can't kill yourself!";
}
只需将所有内容都设为小写,您就不会有问题。
答案 2 :(得分:1)
尝试使用strcasecmp
if (strcasecmp($killuser, $user) == 0) {
echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
答案 3 :(得分:0)
在没有引号的情况下试试
if ($killuser == strtolower($user)) {
这将使它更低级