Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y...

19
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

Transcript of Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y...

Page 1: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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

Page 2: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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

Page 3: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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

Page 4: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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

Page 5: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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

Page 6: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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

Page 7: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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

Page 8: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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."; }

Page 9: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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.`; }

Page 10: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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

Page 11: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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()

Page 12: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP 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}/',”[email protected]")) { echo "HAY COINCIDENCIA"; } else { echo "NO HAY COINCIDENCIA"; }

Page 13: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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.

Page 14: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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.

Page 15: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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.

Page 16: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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.

Page 17: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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; }

Page 18: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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."; }

Page 19: Unidad 2 - Juan José Taboada...Unidad 2 2.6 Técnicas para generar formularios, validarlos y procesarlos en el mismo documento web. Implantación de 23/11/2016 ... SINTAXIS PHP PREG_MATCH()

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