通过使用mysql的php中的AJAX实时检查用户名是否存在

ech*_*ogy 6 php jquery

我正在开发一个php/MySQL项目,要求我在用户输入用户名时实时检查用户名.

这是我的username.php,其中用户实际输入用户名和密码,并从中触发check.php ...

<html>
<head>
   <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>

   <script type="text/javascript">

     $(document).ready(function(){
        $("#username").change(function(){
             $("#message").html("<img src='images/loader.gif' /> checking...");


        var username = $("#username").val();

          $.ajax({
                type:"post",
                url:"check.php",
                data:"username =" + username,
                    success:function(data){
                    if(data==0){
                        $("#message").html("<img src='images/tick.png' /><span style='font-size:13px; color: black'> Username available</span>");
                    }
                    else{
                        $("#message").html("<img src='images/err.png' /><span style=font-size:13px; color: red'> Username already taken</span>");
                    }
                }
             });

        });

     });

   </script>
   </head>

   <body>

   <table>
    <tr>
          <td>Username</td>
          <td>:</td>
          <td><input type="text" name="username" id="username"/><td>
            <td id="message"><td>
    </tr>

    <tr>
          <td>Password</td>
          <td>:</td>
          <td><input type="text" name="password" id="password" /><td>
    </tr>
   </table>
   </body>
   </html>
Run Code Online (Sandbox Code Playgroud)

这是check.php,其中在数据库中检查用户名.

<?php

$con = mysqli_connect("localhost", "root", "hilbi", "userdb");

if (mysqli_connect_errno())
{

  echo "Failed to connect to MySQL: " . mysqli_connect_error();

}

  // $username = $_POST["username"];

  $username = 'hilbi';

  $query = mysqli_query($con,"SELECT * FROM users WHERE username =   '$username' ");

  $find = mysqli_num_rows($query);

  echo $find;

  mysqli_close($con);

  ?>
Run Code Online (Sandbox Code Playgroud)

现在check.php工作正常(我通过单独执行它检查,它在找到用户名时返回1,反之亦然)
但是当我执行username.php时, 它总是返回已经采用用户名.看起来它实际上并没有在数据库中看到实际上没有这样的用户名.

任何形式的帮助将不胜感激......

Muh*_* M. 5

使用jQuery在javascript中发送数据,如下所示:

$.post( "check.php", { user: $("#username").val() }, function (data){
  if(data=='1'){
   //do 1
  }
  elseif(data=='0'){
    //do 0
  }
});
Run Code Online (Sandbox Code Playgroud)

在你的check.php中获取这样的用户名

//some basic validation
if(!isset($_POST['user'] || empty($_POST['user']))
{
   echo '0'; exit();
}

$username = trim($_POST['user']); 
Run Code Online (Sandbox Code Playgroud)

为了使其正常工作,check.php必须返回1或0,不要在那里或任何地方回显mysql错误.如果发生任何错误,只需回显0.

  • 我知道这是排序但只有一个小提示,用你的select查询来检查用户是否存在,不要使用"SELECT*"而只是"SELECT id",它更快,更少压力在数据库上.你也可以在最后添加"LIMIT 1",因为一旦你找到了一个,你就知道用户名存在而且没有必要找到更多. (4认同)