PHP -formulieren - E-mail en URL valideren
Dit hoofdstuk laat zien hoe u namen, e-mails en URL's valideert.
PHP - Naam valideren
De onderstaande code toont een eenvoudige manier om te controleren of het naamveld alleen letters, streepjes, apostrofs en spaties bevat. Als de waarde van het naamveld niet geldig is, sla dan een foutmelding op:
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
De functie preg_match() zoekt in een tekenreeks naar patroon, waarbij true wordt geretourneerd als het patroon bestaat, en anders false.
PHP - E-mail valideren
De gemakkelijkste en veiligste manier om te controleren of een e-mailadres goed is gevormd, is door de functie filter_var() van PHP te gebruiken.
Als het e-mailadres niet goed is ingevuld, sla dan in de onderstaande code een foutmelding op:
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
PHP - URL valideren
De onderstaande code toont een manier om te controleren of een URL-adressyntaxis geldig is (deze reguliere expressie staat ook streepjes in de URL toe). Als de syntaxis van het URL-adres niet geldig is, sla dan een foutmelding op:
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
PHP - Naam, e-mail en URL valideren
Nu ziet het script er als volgt uit:
Voorbeeld
<?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"]);
}
}
?>
De volgende stap is om te laten zien hoe u kunt voorkomen dat het formulier alle invoervelden leegt wanneer de gebruiker het formulier verzendt.