Форма входа, Ajax вызов функции PHP - PullRequest
0 голосов
/ 20 декабря 2018

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

Сейчас при попытке входа в систему ничего не происходит. Похоже, что access.php не обрабатывает данные, отправленные из Ajax.

Может кто-нибудь сказать мне, почему это не работает?Каковы возможные причины?

index.html:

      <div class="login-form">
      <form method="post" action="index.php">
          <input id="username" type="text" placeholder="Username...">
          <input id="password" type="password" placeholder="Password...">
          <button id="button" type="submit">Login</button>
      </form>

      <script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
      <script type="text/javascript">
      $('#button').click(function(e) {
          e.preventDefault();
          var username = $('#username').val();
          var password = $('#password').val();
          $.ajax({
              type: 'POST',
              url: 'resources/includes/access.php',
              data: {
                func: 'loginSubmit',
                usernamePHP: username,
                passwordPHP: password
               },
              success: function(response) {
                  $('#result').html(response);
              }
          });
      });
      </script>
  </div>

access.php:

function loginSubmit(){
  require '../dbh.inc.php';
  $mailuid = $_POST['usernamePHP'];
  $password = $_POST['passwordPHP'];
  if(empty($mailuid) || empty($password)){
    header("Location: ../../index.php?error=emptyfields");
    exit();
  }
  else{
    $sql = "SELECT * FROM users WHERE uidUsers=? OR emailUsers=?;";
    $stmt = mysqli_stmt_init($conn);
    if(!mysqli_stmt_prepare($stmt, $sql)){
      header("Location: ../../index.php?error=sqlerror");
      exit();
    }
    else{
      mysqli_stmt_bind_param($stmt, "ss", $mailuid, $password);
      mysqli_stmt_execute($stmt);
      $result = mysqli_stmt_get_result($stmt);
      if($row = mysqli_fetch_assoc($result)){
        $pwdcheck = password_verify($password, $row['pwdUsers']);
        if($pwdcheck == false) {
          header("Location: ../../index.php");
          exit();
        }
        else if($pwdcheck == true) {
          session_start();
          $_SESSION['userId'] = $row['idUsers'];
          $_SESSION['userUid'] = $row['uidUsers'];
          header("Location: ../../index.php?login=success");
          exit();
        }
        else{
          header("Location: ../../index.php");
          exit();
        }
      }
    }
  }
}

1 Ответ

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

Из того, что я вижу из документации , добавление имени функции в качестве свойства данных, как вы, не вызывает эту функцию;

Тип данных: PlainObjectили String или Array

Когда вы вызываете access.php, файл просто содержит определение функции, на самом деле вы его не вызываете.

Итак, у вас есть два варианта.Либо вызовите функцию, добавив loginSubmit() после функции (в конце access.php), либо полностью удалите код на access.php из функции.

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