在php/mysql中防止具有不区分大小写行为的重复用户名

在php/mysql中防止具有不区分大小写行为的重复用户名,php,mysql,security,insert,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 usernam

在我的网站上,用户名是这样保存的,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。

您应该在用户名列上添加唯一索引


此外,您可以在这里找到一些有用的信息:

您应该在用户名列上添加一个唯一的索引


此外,您可以在这里找到一些有用的信息:

将它们转换为相同的大小写,然后进行比较。 因此:


从LOWERusername=LOWER'$username'的表格中选择username

将两者转换为相同的大小写,然后进行比较。 因此:


从LOWERusername=LOWER'$username'的表中选择username

希望您已经清理了用户名的用户输入以防止SQL注入,然后,在检查重复项或在数据库中插入用户名之前,使用PHP解析您的用户名:

$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.");
  }

希望您已经对用户名的用户输入进行了清理,以防止SQL注入,然后,在检查重复项或将用户名插入数据库之前,使用PHP解析用户名:

$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.");
  }

php有着非常重要的功能,但人们在启动strtolower时忽略了它,而是在运行时使用它

注册和查询

  $username = strtolower($username);

你再也不会面临这样的问题了。

php有着非常重要的功能,但人们在启动strtolower时忽略了它,在启动时使用它

注册和查询

  $username = strtolower($username);

你再也不会面对这样的问题了。

这真是奇怪的行为,MySQL查询不区分大小写。给我们看看你的数据库模式,或者你想让我们猜测所有这些?这真是奇怪的行为,MySQL查询不区分大小写。给我们看看你的数据库模式,或者你想让我们猜测所有这些?冗余,mysql的默认安装与_ci排序规则不区分大小写。如果在PHPMyadmin中执行查询会怎么样?冗余,因为mysql的默认安装与_ci排序规则不区分大小写。如果在PHPMyadmin中执行查询会怎么样?这是一个糟糕的答案。是的,它会停止用户的创建,但是在尝试插入之前应该有一个检查。我猜他已经涵盖了这一部分,这里的问题在于数据库方面,而不是他的PHP代码。您应该阅读MySQL中的排序规则和区分大小写的内容。这是一个糟糕的答案。是的,它会停止用户的创建,但是在尝试插入之前应该有一个检查。我猜他已经涵盖了这一部分,这里的问题在于数据库方面,而不是他的PHP代码。您应该阅读MySQL中的排序规则和区分大小写。您仍然没有将表中数据的大小写与参数的大小写匹配。您仍然没有将表中数据的大小写与参数的大小写匹配。