2016-09-21 3 views
0

Я работаю над формой входа, где пользователь вводит свой адрес электронной почты, который проверяется через AJAX, после чего пароль также проверяется через AJAX. Вот код, JS code-Получение нескольких данных через AJAX в PHP?

//AJAX for email input field 
function emailCheck(email) { 
    return $.ajax({ 
     type: "POST", 
     url: "ajax_index.php", 
     data: "email=" + email 
    }); 
} 

//AJAX for password input field 
function passwordCheck(password, email) { 
    return $.ajax({ 
     type: "POST", 
     url: "ajax_index.php", 
     data: {password: password, email: email} 
    }); 
} 

PHP код -

//receives POST request from email field 
if (isset($_POST['email'])) { 
    $email = mysqli_real_escape_string($dbconn, $_POST['email']); 

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     echo -1; 
    } else { 
     $query = "SELECT * from users WHERE email = '$email'"; 
     $query_result = mysqli_query($dbconn, $query) or die(mysqli_error($dbconn)); 
     $result_rows = mysqli_num_rows($query_result); 

     echo $result_rows; 
    } 
} 

//receives POST from password field 
if (isset($_POST['password'], $_POST['email'])) { 
    $email = mysqli_real_escape_string($dbconn, $_POST['email']); 
    $password = mysqli_real_escape_string($dbconn, $_POST['password']); 

    $query = "SELECT email, password from users WHERE email = '$email'"; 
    $query_result = mysqli_query($dbconn, $query) or die(mysqli_error($dbconn)); 
    $result_rows = mysqli_num_rows($query_result); 

    $row = mysqli_fetch_assoc($query_result); 

    if (password_verify($password, $row['password'])) { 
     echo 1; 
    } 
    else { 
     echo 0; 
    } 
} 

Как вы можете видеть, в поле пароля, я должен получить как $_POST['password'] и $_POST['email'], так что я может проверить пароль на это письмо. Но это вызывает как обработчики, так и одно поле электронной почты, а другое - как для электронной почты, так и для пароля, которые я только хочу запускать. Итак, как я могу решить эту проблему? Спасибо.

+0

Нам нужно увидеть прикрепленные обработчики, которые вызывают функции 'mailCheck' и' passwordCheck'. –

+1

проверить на наличие электронной почты, если он существует для пароля еще вернуть email m = не существует –

+2

лучше иметь дополнительную переменную типа 'action = emailCheck' и' action = passwordCheck', чтобы избежать путаницы. – Sasikumar

ответ

0

Итак, глупая проблема, мне просто пришлось поместить обработчик для поля пароля внутри обработчика для поля электронной почты в условном блоке. Так что это работает, если я меняю на это -

if (isset($_POST['email'])) { 
    if(isset($_POST['password'])) { 
     $email = mysqli_real_escape_string($dbconn, $_POST['email']); 
     $password = mysqli_real_escape_string($dbconn, $_POST['password']); 

     $query = "SELECT email, password from users WHERE email = '$email'"; 
     $query_result = mysqli_query($dbconn, $query) or die(mysqli_error($dbconn)); 
     $result_rows = mysqli_num_rows($query_result); 

     $row = mysqli_fetch_assoc($query_result); 

     if (password_verify($password, $row['password'])) { 
      echo 1; 
     } 
     else { 
      echo 0; 
     } 
    } 
    else { 
     $email = mysqli_real_escape_string($dbconn, $_POST['email']); 

     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      echo -1; 
     } else { 
      $query = "SELECT * from users WHERE email = '$email'"; 
      $query_result = mysqli_query($dbconn, $query) or die(mysqli_error($dbconn)); 
      $result_rows = mysqli_num_rows($query_result); 

      echo $result_rows; 
     } 
    } 
} 

Или, как Sasikumar сказал, используя дополнительную переменную будет работать.

Смежные вопросы