PHP -Formulare - E-Mail und URL validieren
Dieses Kapitel zeigt, wie Sie Namen, E-Mails und URLs validieren.
PHP - Name validieren
Der folgende Code zeigt eine einfache Möglichkeit, um zu überprüfen, ob das Namensfeld nur Buchstaben, Bindestriche, Apostrophe und Leerzeichen enthält. Wenn der Wert des Namensfelds nicht gültig ist, speichern Sie eine Fehlermeldung:
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
Die Funktion preg_match() durchsucht einen String nach Mustern und gibt „true“ zurück, wenn das Muster vorhanden ist, andernfalls „false“.
PHP - E-Mail validieren
Der einfachste und sicherste Weg, um zu überprüfen, ob eine E-Mail-Adresse wohlgeformt ist, ist die Verwendung der Funktion filter_var() von PHP.
Wenn die E-Mail-Adresse nicht wohlgeformt ist, hinterlegen Sie im folgenden Code eine Fehlermeldung:
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
PHP - URL validieren
Der folgende Code zeigt eine Möglichkeit zu überprüfen, ob eine URL-Adresssyntax gültig ist (dieser reguläre Ausdruck erlaubt auch Bindestriche in der URL). Wenn die Syntax der URL-Adresse nicht gültig ist, dann hinterlegen Sie eine Fehlermeldung:
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
PHP - Validierung von Name, E-Mail und URL
Nun sieht das Skript so aus:
Beispiel
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
?>
Im nächsten Schritt wird gezeigt, wie verhindert werden kann, dass das Formular alle Eingabefelder leert, wenn der Benutzer das Formular absendet.