在我的网站中,用户名像 robert 一样保存,有趣的是人们可以注册名称Robert(Capital R)。
我如何防止这些重复的用户名?
我的项目是在mysql / php
if (mysql_num_rows(mysql_query("SELECT username FROM user_table WHERE username='$username'")) > 0){
die("duplicated usernames can't be saved , this username exists.");
}
即使使用此代码, Robert 也可以注册。
答案 0 :(得分:3)
您应该在用户名栏上添加一个UNIQUE索引。
此外,您可以在此处找到一些有用的信息:https://stackoverflow.com/search?q=mysql+case+sensitive
答案 1 :(得分:2)
将它们转换为相同的大小写然后进行比较。 就这样:
SELECT username FROM table WHERE LOWER(username) = LOWER('$username')
答案 2 :(得分:0)
希望您已经清理了用户名的用户输入,以防止SQL注入,之后,在检查重复项或在数据库中插入名称之前,使用PHP来LC您的用户名:
$username = strtolower($username);
if (mysql_num_rows(mysql_query("SELECT username FROM user_table WHERE username='$username'")) > 0){
die("duplicated usernames can't be saved , this username exists.");
}
答案 3 :(得分:0)
php具有非常重要的功能,但人们在开始strtolower
时忽略它,在
注册和查询
$username = strtolower($username);
你再也不会遇到这样的问题了。