1. 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/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
2. 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/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
3. 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/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
4. 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/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
5. 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/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
6. 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/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
7. 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/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
8. J.J. Taboada León
Técnica para Validar datos (I)
• //Elementos obligatorios
• //comprobar un rango de números
23/11/2016Implantació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.";
}
9. 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.`; }
10. 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/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada
11. 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()
12. 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/2016Implantació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";
}
13. J.J. Taboada León
$entero preg_match ($exp_regular , $cadena [, $coincidencias[, $flags [, $comienzo ]]])
SINTAXIS PHP PREG_MATCH()
23/11/2016Implantació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.
14. 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.
15. 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.
16. 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.
17. J.J. Taboada León
Ejemplo: Validar un email
23/11/2016Implantació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;
}
18. J.J. Taboada León
Ejemplo: Verificar si una contraseña es
segura
23/11/2016Implantació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."; }
19. J.J. Taboada León
Unidad 2
2.6 VALIDAR FORMULARIOS
FIN DE LA PRESENTACIÓN
GRACIAS
23/11/2016Implantación de
Aplicaciones
WEB.FORMATOS DE
PRESENTACIÓN. JJ
Taboada