Moduli PHP - Campi obbligatori
Questo capitolo mostra come rendere obbligatori i campi di input e creare messaggi di errore se necessario.
PHP - Campi obbligatori
Dalla tabella delle regole di convalida nella pagina precedente, vediamo che i campi "Nome", "E-mail" e "Sesso" sono obbligatori. Questi campi non possono essere vuoti e devono essere compilati nel modulo HTML.
Field | Validation Rules |
---|---|
Name | Required. + Must only contain letters and whitespace |
Required. + Must contain a valid email address (with @ and .) | |
Website | Optional. If present, it must contain a valid URL |
Comment | Optional. Multi-line input field (textarea) |
Gender | Required. Must select one |
Nel capitolo precedente, tutti i campi di input erano facoltativi.
Nel codice seguente abbiamo aggiunto alcune nuove variabili: $nameErr, $emailErr, $genderErr e $websiteErr. Queste variabili di errore conterranno i messaggi di errore per i campi obbligatori. Abbiamo anche aggiunto if else
un'istruzione per ogni variabile $_POST. Questo controlla se la variabile $_POST è vuota (con la empty()
funzione PHP). Se è vuoto, viene memorizzato un messaggio di errore nelle diverse variabili di errore e, se non è vuoto, invia i dati di input dell'utente tramite la test_input()
funzione:
<?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"]);
}
if (empty($_POST["email"]))
{
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
}
if (empty($_POST["website"]))
{
$website = "";
} else {
$website = test_input($_POST["website"]);
}
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"]);
}
}
?>
PHP - Visualizza i messaggi di errore
Quindi nel form HTML, aggiungiamo un piccolo script dopo ogni campo obbligatorio, che genera il messaggio di errore corretto se necessario (ovvero se l'utente tenta di inviare il modulo senza compilare i campi obbligatori):
Esempio
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<input type="radio" name="gender" value="other">Other
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
Il passaggio successivo consiste nel convalidare i dati di input, ovvero "Il campo Nome contiene solo lettere e spazi bianchi?" e "Il campo E-mail contiene una sintassi dell'indirizzo e-mail valida?" e, se compilato, " Il campo Sito web contiene un URL valido?".