Проверка соответствия имени пользователя и пароля - Jquery - PullRequest
0 голосов
/ 15 мая 2019

У меня проблема с кодом, из-за которой имя пользователя и пароль не совпадают. Вот мой вывод. Если имя пользователя и пароль не совпадают, то будет выдано сообщение, что оно не соответствует . Однако, когда имя пользователя и пароль совпадают, появится сообщение о том, что оно соответствует вот мой код ниже:

Image here

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);
    }
 ?>

1 Ответ

1 голос
/ 15 мая 2019

Примечания

  • Вы широко открыты для внедрения SQL.Вместо этого вы должны использовать подготовленные заявления.Пожалуйста, прочитайте Как я могу предотвратить внедрение SQL в PHP?
  • Вы не должны хранить пароли в виде простого текста.Вместо этого используйте функции PHP password_hash и password_verify для хеширования и проверки.

Ответ

Вы используете isset неправильно.Чтобы убедиться, что задано несколько значений, разделите их запятыми, а не &&:

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

Ваш PHP-код в его текущем состоянии не будет выводить никаких данных, поскольку он завершится с фатальной ошибкой наэта строка.

В вашем jQuery вы не указали несколько селекторов правильно.Все они должны быть внутри одного и того же набора кавычек:

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

Вам также нужно изменить этот код, который установит значения username и password в одну и ту же вещь:

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

до

var username = $('#username').val();
var password = $('#password').val();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...