En este capítulo se muestra cómo hacer que los campos de entrada necesarios y crear mensajes de error si es necesario.
Los campos necesarios - PHP
A partir de la tabla de reglas de validación en la página anterior, vemos que el "Name" , "E-mail" y "Gender" se requieren campos. Estos campos no pueden estar vacíos y deben ser completado en el formulario HTML.
Campo | Las reglas de validación |
---|---|
Nombre | Necesario. + Sólo puede contener letras y espacios en blanco |
Necesario. + Debe contener una dirección válida de correo electrónico (with @ and .) | |
Sitio web | Opcional. Si está presente, debe contener una URL válida |
Comentario | Opcional. Campo de entrada multilínea (textarea) |
Género | Necesario. Debe seleccionarse uno |
En el capítulo anterior, todos los campos de entrada eran opcionales.
En el siguiente código que hemos añadido algunas nuevas variables: $ nameErr, emailErr $, $ genderErr y $ websiteErr. Estas variables de error sostendrán mensajes de error para los campos obligatorios. También hemos añadido una declaración else if para cada variable $ _POST. Esto comprueba si la variable $ _POST está vacía (with the PHP empty() función). Si está vacía, un mensaje de error se almacena en las diferentes variables de error, y si no está vacía, envía los datos de entrada de usuario a través de la test_input() Función:
<?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 - mostrar los mensajes de error
Luego, en el formulario HTML, se añade un pequeño script después de cada campo requerido, lo que genera el mensaje de error correcto si es necesario (es decir, si el usuario intenta enviar el formulario sin necesidad de rellenar los campos obligatorios):
Ejemplo
<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
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input
type="submit" name="submit" value="Submit">
</form>
Ejecutar ejemplo » El siguiente paso es la validación de los datos de entrada, es decir "Does the Name field contain only letters and whitespace?" Y "Does the E-mail field contain a valid e-mail address syntax?" Y si se llena a cabo, "Does the Website field contain a valid URL?" .