используя ajax для входа через php - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь использовать window.location = "userpage.php";после успешного входа в систему, но страница не перенаправляет.Я использую Ajax и модальную форму в моем коде

Все работает отлично.Я не получаю никаких ошибок.Я проверяю сетевые заголовки.и нет ответа в сети, я не смог выяснить проблему.Я пытался

window.location.href

window.location.replace.

Ничего не работает, нужна помощь Спасибо

Это часть файла js

    $("#loginform").submit(function(event) {
    //prevent default php processing
    event.preventDefault();
    //collect user inputs
    var datatopost = $(this).serializeArray();
    //send them to login.php using AJAX
      $.ajax({
      url: "login.php",
      type: "POST",
      data: datatopost,
      success: function(data) {
        if (data == "success") {
          window.location = "user_page.php";
        } else {
          $("#loginmessage").html(data);
        }
      },
      error: function() {
        $("#loginmessage").html(
          "<div class='alert alert-danger'>There was an error with the Ajax Call. Please try again later.</div>"
        );$
      }
    });
  });

Это часть моего файла login.php

//Start session
session_start();
//Connect to the database
include("connection.php");
...
$email = mysqli_real_escape_string($conn, $email);
$password = mysqli_real_escape_string($conn, $password);
$password = hash('sha256', $password);
    //Run query: Check combinaton of email & password exists
$sql = "SELECT * FROM users WHERE email='$email' AND password='$password' AND activation='activated'";
$result = mysqli_query($conn, $sql);
if (!$result) {
    echo '<div class="alert alert-danger">Error running the query!</div>';
    exit;
}
    //If email & password don't match print error
$count = mysqli_num_rows($result);
if ($count !== 1) {
    echo '<div class="alert alert-danger">Wrong Username or Password</div>';
} else {
//log the user in: Set session variables
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    $_SESSION['user_id'] = $row['user_id'];
    $_SESSION['username'] = $row['username'];
    $_SESSION['email'] = $row['email'];

     if (empty($_POST['remember'])) {
         echo "success";
     } else {
  // todo logic for remember me 
}
}

Это модальная форма

//Start session
session_start();
//Connect to the database
include("connection.php");
...
<form method="post" class="login_form modal" id="loginform">
  <div class="form-body">
    <div class="form-head"><h3>Login form</h3></div>
    <div class="form-logo"><img src="/dist/img/logo.svg" alt="" /></div>
    <div id="loginmessage"></div>
    <div class="form-inputs">
      <p><input type="email" name="email" placeholder="email" /></p>
      <p><input type="password" name="password" placeholder="Password" /></p>
    </div>
    <div class="login-session">
      <div class="remember">
        <input type="checkbox" id="remember" name="remember" value="remember" />
        <label for="remember">Remember me</label>
      </div>
      <div class="">
        <a href="#reset_password" rel="modal:open">Forgot my password</a>
      </div>
    </div>
    <div class="form-submit">
    <input class="btn btn-primary" type="submit" value="log in"/>
      <a class="btn btn-small" href="#signupform" rel="modal:open">register</a>
    </div>
  </div>
</form>

1 Ответ

0 голосов
/ 27 декабря 2018

Я наконец нашел решение проблемы.

В файле index.js:

success: function(data) {
   if (data == "success") {
      window.location = "user_page.php";` 

было изменено на:

success: function(data) {
   if ($.trim(data) == "success") {
      window.location = "user_page.php";` 

Поскольку ответсообщение об успехе по какой-то причине содержало пробелы.Я обрезал все пробелы, и это сработало.

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