Данные об успешном входе в ajax, но не перенаправляют на страницу индекса - PullRequest
0 голосов
/ 07 марта 2019

Я хочу проверить форму входа, используя успешный ответ ajax, но если все товары должны быть перенаправлены на главную страницу, но это не работает, я не понимаю, в чем дело, пожалуйста, помогите. заранее спасибо ..

$(document).ready(function(){
       var response;
        $('#submit').click(function(e){
        e.preventDefault();
        $('.alert-box').html('<div id="loading" style="margin: 0 auto;" > 
        </div>');
        var action = 'ajax_validation';
        var username = $('#username').val();
        var password = $('#password').val();
        $.ajax({
            url:"do_login.php",
            method:"POST",
            data:{action:action, username:username, password:password},
            success:function(data){
              response = data;
              if(response === 1){
                window.location.href = "http://stackoverflow.com";
              }else{
                $('.alert-box').addClass("alert alert-warning");
                $('.alert-box').html(response);
              }
                }
            });
       });
    });

над этим запросом ajax это код страницы действия включают в себя ( 'включает / db.php');

if(isset($_POST["action"])){

    $check_username = $_POST['username'];
    $check_password = $_POST['password'];

    if(empty($check_username) && empty($check_password)){
        echo "Please fill all field";
    }else{
        $query = "SELECT * FROM user WHERE email = '{$check_username}' AND password = '{$check_password}' ";  
        $select_query=mysqli_query($connection,$query);

        if(!$select_query){
        die("QUERY FAILED".mysqli_error($select_query));
        }

        if(mysqli_num_rows($select_query)==0){
            echo "Username or password are incorrect!";
        }else{
            while ($row=mysqli_fetch_assoc($select_query)) {
                $_SESSION['username'] = $row['email'];
                echo $row['email'];
            }
        }
    }

  }

Ответы [ 3 ]

1 голос
/ 07 марта 2019

В вашем резюме вы повторяете

 echo $row['email'];

Это должно быть:

 echo 1;
0 голосов
/ 07 марта 2019

Я думаю, что проблема заключается в проверке состояния ответа при успешном выполнении ajax.Вы проверяете, совпадает ли строка (электронная почта или сообщение об ошибке) и имеет тот же тип 1.

...
dataType: 'json',
success:function(data){
              response = data;
              if(response === 1){
...

Вы можете использовать ответ json с кодом состояния / ошибки:

...
success:function(data){
              response = JSON.parse(data);
              if(response.status === 1){
                window.location.href = "http://stackoverflow.com";
              }else{
                $('.alert-box').addClass("alert alert-warning");
                $('.alert-box').html(response.data);
              }
                }
...
$check_username = $_POST['username'];
$check_password = $_POST['password'];
$res = array('status'=> 0, 'data' => '');
if(empty($check_username) && empty($check_password)){
    $res['status'] = 0;
    $res['data'] = "Please fill all field";
}else{
    $query = "SELECT * FROM user WHERE email = '{$check_username}' AND password = '{$check_password}' ";  
    $select_query=mysqli_query($connection,$query);

    if(!$select_query){
      $res['status'] = 0;
      $res['data'] = "QUERY FAILED".mysqli_error($select_query);
      echo json_encode($res);
      return;
    }

    if(mysqli_num_rows($select_query)==0){
      $res['status'] = 0;
      $res['data'] = "Username or password are incorrect!";
    }else{
        while ($row=mysqli_fetch_assoc($select_query)) {
            $_SESSION['username'] = $row['email'];
            $res['status'] = 1;
            $res['data'] = "".$row['email'];
        }
    }
}
echo json_encode($res);

Кроме того, я предлагаю в запросе указать только имя пользователя и проверить, совпадает ли пароль с php.

0 голосов
/ 07 марта 2019

Ваша проблема в том, что вы проверяете, если значение равно 1 в ajax:

success:function(data){
      response = data;
      if(response === 1){ //<- there you are checking if your echo is 1 but you are trying to echo $row['email']; 
         window.location.href = "http://stackoverflow.com";
      }else{
         $('.alert-box').addClass("alert alert-warning");
         $('.alert-box').html(response);
      }
 }

измените ваш эхо-сигнал с $row['email'] на 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...