Ich versuche, eine Validierung einer E-Mail durch Ajax zu starten, aber die Mail-Variable wird irgendwo auf dem Weg verloren. Ich bin oft nach einem Tippfehler gegangen und kann keinen finden. So, jetzt verstehe ich nicht, was passiert ist. Und am Ende bekomme ich eine Fehlermeldung wie diese.Variable Wert wird verloren php, ajax
"Warnung: preg_match() [function.preg-Match]: Null-Byte in regulären Ausdruck in /var/www/rajohan.no/php/functions.php auf Leitung 301 false"
Das Eingabefeld wie diesem ist
<input placeholder="Din email adresse" name="contact_mail" id="contact_mail" class="contact_input" type="text" tabindex="2">
die uRL aus dem ajax-Aufruf erzeugt wie folgt aussieht
Es dann zu diesem PHP-Skript übergegangen bekommen
if(isset($_GET['contact_mail'])) {
$contact_mail = $_GET['contact_mail'];
if(empty($contact_mail)) {
echo "false";
}
elseif(!validate_mail($contact_mail)) {
echo "false";
}
else {
echo "true";
}
}
Und dann das Skript ruft diese Funktionen erzeugt die E-Mail und gibt das Ergebnis zu bestätigen.
function validate_mail($data) {
$pattern = "/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD";
return preg_match($pattern, $data);
}
'if-else' Code und Funktionscode sind in der gleichen Datei? –
keine verschiedenen Dateien. Die Funktionsdatei ist oben in der Datei mit dem if-else-Code enthalten. Ich habe 4 weitere preg_matches unter diesem einen und sie alle arbeiten, aber dieses gibt mit dem Fehler zurück. – Rajohan