防止php / mysql中具有非大小写敏感行为的重复用户名

时间:2011-03-16 13:05:12

标签: php mysql security insert

在我的网站中,用户名像 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 也可以注册。

4 个答案:

答案 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);

你再也不会遇到这样的问题了。