Ich habe ein Login und Anmeldeformular auf der gleichen Seite, die ich mit jQuery ausblenden, so dass nur ein Formular zu einer Zeit aktiv ist. Wenn ich das Registrierungsformular aktiv habe, fülle das E-Mail-Feld mit einer E-Mail aus, die nicht mit meiner PHP-if-Anweisung übereinstimmt, und drücke auf Senden, dann aktualisiert die Seite und aktiviert das Anmeldeformular.Kann Ajax nicht mit PHP so arbeiten, wie ich möchte
Ich möchte, dass die Seite das PHP-Skript ausführt, wenn die PHP-if-Anweisung fehlschlägt, verhindert sie das Aktualisieren der Seite und druckt dann die Nachricht in der else-Anweisung von PHP.
Der Code sieht wie folgt aus:
PHP:
if(isset($_POST['register'])) {
$email = strip_tags($_POST['email']);
$password = strip_tags($_POST['password']);
$request = $_POST['request'];
$email = $DBcon->real_escape_string($email);
$password = $DBcon->real_escape_string($password);
$email = $_POST['email'];
$password = $_POST['password'];
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$check_email = $DBcon->query("SELECT email FROM members WHERE email='$email'");
$count = $check_email->num_rows;
if ($count==0) {
if (preg_match('/^[a-z]{6}+[0-9]{2}[email protected]+$/i', $email)) {
$query = "INSERT INTO members(email, password) VALUES('$email', '$hashed_password')";
$result = $DBcon->query($query);
header("Location: home.php");
die();
} else {
echo "You must provide a valid student email!";
}
} else{
echo "Email already taken!";
}
}
$DBcon->close();
jQuery:
$(document).ready(function() {
var request = $(this).serialize();
$("#registerform").on('submit', function (event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'registration.php',
data: request,
success: function(){
$(this).submit();
console.log("test");
},
error: function() {
event.preventDefault();
alert("fail");
}
});
});
});
Setzen Sie 'var request = $ (this) .serialize();' in submit-Funktion. – DrKey
Ich habe dies versucht, aber ich bekomme diesen Fehler: "Undefinierter Index: Anfrage in ...." bezog sich auf meine "$ Anfrage = $ _POST ['Anfrage'];" in meinem PHP. Wenn ich "print_r ($ _ POST)" ausführen die Werte der Anfrage werden tatsächlich gedruckt. – Kristoffer