检查用户名和密码是不是匹配或可用 - Jquery

Posted

技术标签:

【中文标题】检查用户名和密码是不是匹配或可用 - Jquery【英文标题】:Checking if Username and Password is match or available - Jquery检查用户名和密码是否匹配或可用 - Jquery 【发布时间】:2019-10-02 02:23:13 【问题描述】:

我的代码存在用户名和密码不匹配的问题。 这是我的输出。用户名和密码不匹配时,会提示不匹配,而用户名和密码匹配时,会提示匹配 下面是我的代码:

html代码

<body>  
  <div class="container box">  
   <div class="form-group">  
    <h3 align="center">Live Username Available or not By using php Ajax Jquery</h3><br />  
    <label>Enter Username</label>  
    <input type="text" name="username" id="username" class="form-control" />
    <input type="password" name="password" id="password" class="form-control" />

    <span id="availability"></span>
    <br /><br />
    <button type="button" name="register" class="btn btn-info" id="register" disabled>Register</button>
    <br />
   </div>  
   <br />  
   <br />  
  </div>  
 </body>  
</html>  

脚本代码

  <script>  
     $(document).ready(function()  
       $('#username','#password').blur(function()

         var username = $(this).val();
         var password = $(this).val();

         $.ajax(
          url:'check.php',
          method:"POST",
          data:user_name:username, password:password,
          success:function(data)
          
           if(data != '1')
           
            $('#availability').html('<span class="text-danger">Username and Password not Match</span>');
            $('#register').attr("disabled", true);
           
           else
           
            $('#availability').html('<span class="text-success">Username and Password Available</span>');
            $('#register').attr("disabled", false);
           
          
         )

      );
     );  
    </script>

check.php - 我的数据库连接和从数据库中获取它的查询

 <?php  
    //check.php  
    $connect = mysqli_connect("localhost", "username", "", "dbname"); 
    if(isset($_POST["user_name"] && $_POST["password"]))
    
     $username = mysqli_real_escape_string($connect, $_POST["user_name"]);
     $password = mysqli_real_escape_string($connect, $_POST["password"]);
     $query = "SELECT * FROM admin WHERE username = '".$username."' AND password = '".$password."' ";
     $result = mysqli_query($connect, $query);
     echo mysqli_num_rows($result);
    
 ?>

【问题讨论】:

成功回调函数中console.log(data)的输出是什么?? @Mohamed-Yousef 当我删除密码时,程序仅通过用户名即可正常工作,程序工作正常,但是当我添加密码时,它不起作用无法从 console.log 获取数据我不是确定这个if(isset($_POST["user_name"] &amp;&amp; $_POST["password"])) 和这个$('#username','#password').blur(function() 试试这个***.com/questions/56034740/… @Mohamed-Yousef 只是为了通知您先生,该代码是来自该站点 Check username availability 的教程。我只是修改并更改它以进行两个输入,即密码然后它无法正常工作。 @Nick 回答了jquery selectorisset 部分.. 但要让你知道.. 没用 专门描述问题并不是一件好事与ajax 。使用 AJAX。 1-检查js和php文件之间的连接.. 2-console.log返回的数据.. 3-将变量从js传递到php..然后在php中回显它应该返回一个返回的数据.. 4- 添加 db 部分,然后一次又一次地检查数据以输出所需的输出.. 最后一件事是在任何 if 语句 var data = data.trim(); 之前准确修剪数据以避免任何不需要的空格 【参考方案1】:

备注

您对 SQL 注入持开放态度。您应该改用准备好的语句。请阅读How can I prevent SQL injection in PHP? 您不应以纯文本形式存储密码。而是使用 PHP 的 password_hashpassword_verify 函数进行哈希和验证。

回答

您错误地使用了isset。要检查是否设置了多个值,请用逗号分隔它们,而不是 &amp;&amp;

if(isset($_POST["user_name"], $_POST["password"]))

您当前的 PHP 代码不会产生任何输出,因为它会在该行出现致命错误而终止。

在您的 jQuery 中,您没有正确指定多个选择器。它们都应该在同一组引号内:

$('#username, #password').blur(function()

您还需要更改此代码,这会将 usernamepassword 值设置为相同的值:

var username = $(this).val();
var password = $(this).val();

var username = $('#username').val();
var password = $('#password').val();

【讨论】:

你能检查一下jquery代码吗?谢谢楼主 我不确定这条线先生,$('#username','#password').blur(function() @webccodez 你的 jQuery 也有问题。查看我的编辑。 先生,很棒的是消息现在显示Username and Password not Match,即使我输入了正确的用户名和密码。它仍然没有说它是 Match 我们可以更彻底地看到它吗,先生,谢谢你.. 我猜我们已经关闭了?? 回调函数中console.log(data)的输出是什么?

以上是关于检查用户名和密码是不是匹配或可用 - Jquery的主要内容,如果未能解决你的问题,请参考以下文章

检查用户名和密码是不是正确

检查用户名/电子邮件可用性设计问题

JQuery 检查类是不是匹配

如何检查 PHP 中父文件夹中的文件夹或目录是不是可用?

如何检查选择器是不是匹配 jQuery 中的某些内容? [复制]

检查电子邮件是不是匹配模糊