我可以使用表单中的以下代码获取用户输入的名称(用户名)。所以我的问题是,如果我放Shibbirbd
(首字母是资本,但它在我的数据库中是shibbirbd
)那么它就成功转到用户登录面板!但这是错的。为什么会这样?
Mysql数据库用户名是:shibbirbd
。
登录表单脚本:
$uname = mysql_real_escape_string(htmlspecialchars(trim($_POST['uname'])));
$pass = mysql_real_escape_string(htmlspecialchars(trim($_POST['pass'])));
答案 0 :(得分:2)
您可以将WHERE
子句更改为WHERE BINARY
(WHERE BINARY uname = '$uname'
),以测试用户名的二进制值是否相等。
如果您希望此表格上的所有查询都区分大小写,则应考虑将排序规则更改为@Kolink suggested。
答案 1 :(得分:1)
如果您的大写字母应该是小写的话,您是否希望它不会让您登录?
在这种情况下,请将表的排序规则更改为区分大小写的内容,例如utf8_bin
。
答案 2 :(得分:0)
在大多数情况下,字符串是非区分大小写的。为什么用户名是区分大小写很重要?
在MySQL中你可以看到使用编码_ci,其中meanes case insensetive。如果需要,请尝试一些_bin或_cs格式。
答案 3 :(得分:0)
听起来像列排序规则不区分大小写,这是默认设置。尝试将其更改为区分大小写的排序规则,例如latine_general_cs
答案 4 :(得分:0)
使用COLLATE
进行大小写敏感。您可以在此链接中看到示例
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html