当前位置: 首页 > 知识库问答 >
问题:

使用PHP[重复]检查用户名是否已存在

郏兴贤
2023-03-14

我想检查一个用户名是否已经存在于我的数据库中。如果是的话,我想重定向回我的注册页面。我的代码可以添加用户名,但不检查用户名是否存在。请救命!!!这是register.php页面的代码。代码完全跳过对'username'的检查,并将其插入到数据库中(如果它存在或不存在)。

    <?php  
         error_reporting (E_ALL ^ E_NOTICE);    
         include ('dbconn.php');
         session_start();

         $GLOBALS[$error_message];
         $GLOBALS[$username];

         if(isset($_POST['submit']))
           {     
               $error = array();        
               if(empty($_POST['username']))
                 {
                   $error[] = 'Please enter a username. ';
                 }
               else 
                 {
                   $username = mysqli_real_escape_string($connection, $_POST['username']);
                 }

               if(empty($_POST['password']))
                 {
                   $error[] = 'Please enter a password. ';
                 }
               else
                 {
                   $password = mysqli_real_escape_string($connection,$_POST['password']);   
                 }

               if(empty($_POST['cpassword']))
                 {
                   $error[] = 'Please confirm password. ';
                 }
               else
                 {
                   $cpassword = mysqli_real_escape_string($connection,$_POST['cpassword']);
                 }

               if($password == $cpassword)
                 {
                   $mainpassword= $password;
                 }
               else
                 {
                   $error[] = 'Your passwords do not match. ';
                 }      

               if(empty($error))
                 {                     
                   $query = "SELECT * from User WHERE username=' ".$username." ' ";
                   $result = mysqli_query($connection, $query) or die
                       (mysqli_error($connection));

                  if(mysqli_num_rows($result)> 0)
                  {
                   $multi = "Sorry ! This Username is not available...Please choose another";
                  }
                  else{ $sql="INSERT INTO user(username,password)VALUES                          ('$username','$password')";

              mysqli_query($connection, $sql) or die(mysqli_error($connection));
              header('Location:/MySQLi/confirmation.php'); }
}
               else
                  {
                    $error_message = '<span class="error">';
                    foreach($error as $key => $values) {
                    $error_message.="$values";
                    }
                    $error_message.="</span><br/><br/>";    
                    } 
                 }
?>

共有1个答案

戴瑞
2023-03-14

您正在手动在用户名周围添加空格,这样用户名看起来就像不存在:

$query = "SELECT * from User WHERE username=' ".$username." ' ";
                                             ^             ^

应该是:

$query = "SELECT * from User WHERE username='".$username."' ";

使用准备好的语句可以一次性避免该问题和潜在的sql注入问题:

$query = "SELECT * from User WHERE username=?";

还要确保一致使用表名和列名:user不一定与user相同。

还要注意,您不应该将纯文本密码存储在数据库中,您应该对它们进行salt和hash

 类似资料:
  • 我正在设置一个函数,以检查传递的用户名是否存在于我数据库的表中。为了做到这一点,我使用了以下代码: 然而,无论我尝试设置为,我都无法获得任何

  • 问题内容: 我正在尝试检查用户名是否存在。当我打电话时,快照值始终可用,但是它将打印我的整个数据库,而不仅仅是我请求的数据。当我打电话时,它总是返回null。我尝试了很多方法来解决。 这是我的代码: 这是我的json树: 这是安全规则: 问题答案: 修改 JSON 树以包含一个单独的节点,即在您创建新用户时添加每个用户的用户名,在用户修改其用户名时进行修改… 要检查您的用户名是否已经存在: 通过操

  • 问题内容: 我正在使用以下对我不起作用的代码。 无法在 C:\ xampp \ htdocs \ Exp \ welcome.php 中将mysqli_result类的对象转换为int 问题答案: 该代码对您来说很好…

  • 我有麻烦让我的代码工作。当用户输入用户名时,它会检查数据库,看看它是否存在,以及它是否设置了

  • 问题内容: 我正在尝试允许用户通过搜索用户名来开始游戏并关注其他用户。我需要确保具有该用户名的用户存在。我正在使用以下代码,但是尽管调用了,但在应调用时却没有被调用。 JSON数据树 问题答案: 轻松解决: 不要使用.childAdded,因为当查询找不到任何内容时,该块将不会执行。 而是使用.Value并检查NSNull

  • 是否有任何方法检查用户登录与firebase在浏览器。我想检查broswer如果用户登录或没有?