0
私はAJAXで検証されたメールをユーザが入力した後、AJAXを通してパスワードを確認するログインフォームを作成しています。私はそのようにPHPでAJAXで複数のデータを受信していますか?
//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']
の両方を取得する必要があります - ここで はコードで、 JSは、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}
});
}
をコード - その電子メールに対してパスワードを確認できます。しかし、これは両方のハンドラを呼び出します。ハンドラは、電子メールフィールドのみのものと、実行したいものの電子メールとパスワードの両方のものです。だから、どうやってこの問題を解決できるの? ありがとうございます。
'emailCheck'と' passwordCheck'関数を呼び出す添付ハンドラを見る必要があります。 –
電子メールが存在する場合はチェックしてください。パスワード以外の場合電子メールを返すm =存在しません –
は、混乱を避けるために、 'action = emailCheck'や' action = passwordCheck'のような余分な変数を用意することをお勧めします。 – Sasikumar