Post on 28-Jun-2020
J.J. Taboada León
Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. www.docencia.taboadaleon.es
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
J.J. Taboada León
Técnica para validar formularios (I)
//Estructura para validar un formulario
if (isset($_POST['_submit_check'])) {
if (valida_form()) {
procesa_form();
} else {
muestra_form(); }
} else {
muestra_form();
}
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
J.J. Taboada León
Técnica para validar formularios (II)
// Comprobar los datos del formulario
• function valida_form() { //¿tiene el nombre menos de tres caracteres?
if (strlen($_POST[‘nombre']) < 3) { return false; } else { return true; }} //Procesar los datos del formulario
• function procesa_form() { print “Hola, ". $_POST[‘nombre']; }
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
J.J. Taboada León
Técnica para validar formularios (III)
// Muestra el formulario
function muestra_form() { print<<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
Nombre: <input type="text" name=“nombre"><br/>
<input type="submit" value=“Hola">
<input type="hidden" name="_submit_check" value="1">
</form>
_HTML_;
}
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
J.J. Taboada León
Técnica para Validar datos (I) con
mensaje de error // Comprobar los datos del formulario
function valida_form() { // Empezar con un array vacío de mensajes de error $errors = array(); // Añadir un mensaje de error si nombre corto
if (strlen($_POST['my_name']) < 3) { $errors[] = ‘tu nombre debe tener almenos 3 letras.’;
} // devolver el array(posiblemente vacío)de mensajes de error
return $errors; }
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
J.J. Taboada León
Técnica para Validar datos (II) con
mensaje de error // Muestra el formulario function muestra_form($errores=‘’) { if ($errores){ print ‘Por favor corrija errores: <ul> <li>’; print implode(’</li><li>’, $errores); print ‘</li></ul>; } print<<<_HTML_ <form method="POST" action="$_SERVER[PHP_SELF]"> Nombre: <input type="text" name=“nombre"><br/> <input type="submit" value=“Hola"> <input type="hidden" name="_submit_check" value="1"> </form> _HTML_; }
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
J.J. Taboada León
Técnica para validar formularios (III)
con mensaje de error //Estructura para validar un formulario
if (isset($_POST['_submit_check'])) {
if ($error=valida_form()) {
muestra_form($error);
} else {
procesa_form();}
} else {
muestra_form();
}
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
J.J. Taboada León
Técnica para Validar datos (I)
• //Elementos obligatorios
• //comprobar un rango de números
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
if (strlen(trim($_POST['email'])) == 0) { $errors[] = “Debes entrar un dirección de correos."; }
if ($_POST[‘edad'] != strval(intval($_POST[‘edad']))) { $errors[] = “La edad debe ser un número."; }elseif (($_POST[‘edad'] < 18) || ($_POST[‘edad'] > 65)) { $errors[] = “La edad debe estar entre 18 años y 65 años."; }
J.J. Taboada León
Técnica para Validar datos (II)
23/11/2016
//Menús <select> $sweets = array('Sesame Seed Puff','Coconut Milk Gelatin Square‘,'Brown Sugar Cake','Sweet Rice and Meat'); // Display the form function muestrta_form($errores=‘’) { …… print<<<_HTML_ <form method="post" action="$_SERVER[PHP_SELF]"> Your Order: <select name="order"> _HTML_; foreach ($GLOBALS['sweets'] as $choice) { print "<option>$choice</option>\n";}print<<<_HTML_</select><br/><input type="submit" value="Order"><input type="hidden" name="_submit_check" value="1"> </form> _HTML_;}
En validar_form() if (!in_array($_POST[‘order’], $GLOBALS[`sweets`])){$errores[]=‘por favor elije un item válido.`; }
J.J. Taboada León
Actividades
• Modificar la actividad formulario3 del cuaderno de actividades formularios, para que se validen los datos introducidos y se presente los oportunos mensajes de errores aplicando las técnicas aquí propuestas.
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
J.J. Taboada León
Validar con Expresiones regulares
Juan José
Taboada León
2011/2012
Horas de Libre
Configuración.
Formularios JavaScript
Son patrones (cadenas) que permiten buscar
coincidencias con combinaciones de caracteres dentro de
otras cadenas de texto
El objetivo es crear una cadena especial para hacer
búsqueda en otra cadena. Si la expresión regular encaja (match) en la cadena de búsqueda, la operación resultas exitosa. Ejemplo, la expresión regular /ejemplo/ encontrará la subcadena "ejemplo" dentro de la cadena "Esto es un ejemplo."
Se utiliza con la fución preg_match()
J.J. Taboada León
Ejemplos <?php //Demilitador 'i' para no diferenciar mayus y minus if (preg_match("/PRUEBA/i", "esto es una prueba")) { echo "HAY COINCIDENCIA"; }else { echo "NO HAY COINCIDENCIA"; } ?>
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
//buscando al menos 2 numeros seguidos en la cadena if (preg_match('/[0-9]{2}/',”sanSeba22@email.com")) { echo "HAY COINCIDENCIA"; } else { echo "NO HAY COINCIDENCIA"; }
J.J. Taboada León
$entero preg_match ($exp_regular , $cadena [, $coincidencias[, $flags [, $comienzo ]]])
SINTAXIS PHP PREG_MATCH()
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
$entero: El valor devuelto será ’1′ si hay coincidencia, ’0′ si no la hay, y puede devolver FALSE si hay algún error en la función. $exp_regular: Expresión regular que usaremos para la comparación. $cadena: Cadena de texto comparada. $coincidencias: Es un array con información de las partes de la cadena que coinciden con la expresión regular. $flags: Si se pasa el parametro ‘PREG_OFFSET_CAPTURE’ en el array de coincidencias también vendrá el índice de comienzo de cada coincidencia. $comienzo: Posición de comienzo dentro de la $cadena de la comparación.
J.J. Taboada León
Expresiones regulares
(Algunos caracteres especiales I) Metacaracteres • . Match con cualquier carácter • ^ Match al principio del string • $ Match al final del string • \s Match con cualquier espacio en blanco • \d Match con cualquier dígito • \D Match con cualquier carácter que no sea un dígito • \w Match con cualquier carácter que pueda ser parte de
una palabra (letra, número, guión bajo) • \W Match con cualquier carácter que NO pueda ser
parte de una palabra (letra, número, guión bajo) • \A Inicio de un string. • \z Final de un string.
J.J. Taboada León
Expresiones regulares
(Algunos caracteres especiales II) Cuantificadores • * el carácter puede aparecer cero o mas veces. • + el carácter puede aparecer una o mas veces. • ? el carácter puede aparecer cero o una vez. • {n} el carácter aparece exactamente n veces. • {n,} el carácter aparece n o más veces. • {n,m} el carácter puede aparecer entre n y m veces. • Como parte de la notación, siempre encerramos las
expresiones regulares entre /, llaves ({}) o #. Por ejemplo, la expresión /ab?c/ hace match con ac y abc. La expresión regular /ab{1,3}c/ hace match con abc, abbcy abbbc.
J.J. Taboada León
Expresiones regulares
(Algunos caracteres especiales III) Agrupadores • [] permiten agrupar creando rangos, por ejemplo /ab[0-5]+c/ hará
match con cualquier string que contenga ab, una o más veces un número entre 0 y 5, y finalmente una c. Por ejemplo: ab12c.
• () Nos permiten crear sub-expresiones, expresiones regulares contenidas dentro de otras: /a(bc.)+e/. Tiene un uso especial en formas como (…), que permite capturar todo lo que encierren los paréntesis, y (a|b) que hace match con a o b
• Modificadores • Permiten cambiar el modo en que se ejecute la expresión regular. Se
agregan después del delimitador de cierre. • i Coincidir indistintamente entre mayúsculas y minúsculas. • m Match multilínea. • s El metacaracter . hará match también con el caracter de cambio de
línea. • u Hacer los matches en modo UTF8 • x Ignorar espacios.
J.J. Taboada León
Ejemplo: Validar un email
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
function verificar_email($email) { if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",$email)) { return true; } return false; }
J.J. Taboada León
Ejemplo: Verificar si una contraseña es
segura
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
function verificar_password_strenght($password) { if (preg_match("/^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $password)) echo "Su password es seguro."; else echo "Su password no es seguro."; }
J.J. Taboada León
Unidad 2
2.6 VALIDAR FORMULARIOS
FIN DE LA PRESENTACIÓN
GRACIAS
23/11/2016 Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada