Как отобразить ошибку в модальной форме, используя ajax и php, если проверка не удалась при перенаправлении на другую страницу в случае успеха - PullRequest
2 голосов
/ 30 мая 2020

Я работаю на странице входа, которая является модальной формой, когда пользователь нажимает кнопку входа, появляется модальная форма, вот она

<!-- Signin Window Code -->
            <div class="modal fade" id="signup" tabindex="-1" role="dialog" aria-labelledby="myModalLabel2" aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-body">
                     <form action ="login.php" method="POST" id="frmLogin">
                            <div class="new-logwrap">   
                                <div class="form-group">
                                <label>Email</label>
                                <div class="input-with-icon">
                                <input type="email" class="form-control" name="login_email" id = "email_login" placeholder="Enter Your Email" required>
                                <i class="theme-cl ti-email"></i>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label>Password</label>
                                    <div class="input-with-icon">
                                        <input type="password" class="form-control" name="login_pass" id = "pass_login" placeholder="Enter Your Password" required>
                                        <i class="theme-cl ti-lock"></i>
                                    </div>
                                </div>
                                <div class="form-groups">
                                    <button type="submit" name="login" id="logBtn" class="btn btn-primary theme-bg full-width .login">Login</button>
                                </div>                  
                        <!-- error message will show here -->
                                <div id="ack"></div>

, и я использую ajax для проверки того, является ли пользователь проверять или нет

        $('button#logBtn').click(function(){

            if($("#email_login").val() == "" || $("#pass_login").val() == "")
             $("div#ack").html("please enter username or password");
            else
            $.post($("#frmLogin").attr("action"),
            $("#frmLogin :input").serializeArray(),
            function(data) {    
                $("div#ack").html(data);
            });

            $("#frmLogin").submit(function (){
              return false;
            });
   });

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

<?php
// for testing purpose
require 'dbserver.inc.php';
$email     = mysqli_real_escape_string($conn,$_POST['login_email']);
$password  = mysqli_real_escape_string($conn,$_POST['login_pass']); 
$sql = "SELECT count(*) from registergac1 WHERE (email='$email ' AND password = '$password')";
$res  = mysqli_query($conn,$sql);
$row = mysqli_fetch_array($res);
if($row[0] > 0)
{
    header("location: register.php"); //some page to redirect
}
else
{
    echo '<div class="alert alert-danger text-center" role="alert">
    Enter correct email or password!
  </div>';
}

?>

1 Ответ

0 голосов
/ 30 мая 2020

Вы не можете перенаправить с php напрямую, так как вы использовали ajax, ответ будет отправлен обратно на success-function из ajax. Теперь, чтобы решить эту проблему, выполните следующие действия:

Php Код :

if($row[0] > 0)
{
    echo "success";//send back to ajax
}
else
{
     echo "failed";//send back to ajax
}

И проверьте на своей ajax стороне, какие значения пришли и в зависимости от которые либо перенаправляют, либо показывают сообщение об ошибке.

Ajax Код :

$('button#logBtn').click(function() {

  if ($("#email_login").val() == "" || $("#pass_login").val() == "")
    $("div#ack").html("please enter username or password");
  else
    $.post($("#frmLogin").attr("action"),
      $("#frmLogin :input").serializeArray(),
      function(data) {
        var datas = $.trim(data); //remove whitespaces if any 
        if (datas == "success") {
          window.location.href = "register.php"; //redirect
        } else {
          $("div#ack").html('<div class="alert alert-danger text-center" role="alert">Enter correct email or password!</div>'); //show error message 
        }
      });

  $("#frmLogin").submit(function() {
    return false;
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...