Issuu on Google+

Capítulo 4 Envío y recepción de datos

20

4 Envío y recepción de datos 4.1 Formularios Los formularios son la manera más popular de hacer páginas Web interactivas. Como un formato en una hoja de papel, un formulario en una página Web permite al usuario introducir la información requerida y enviarla para su procesamiento. Un formulario HTML es una sección de un documento que contiene normalmente elementos especiales llamados controles (casillas de verificación (checkboxes), radiobotones (radio buttons), menúes, etc.), y rótulos (labels) en esos controles. Los usuarios normalmente llenan un formulario modificando sus controles (introduciendo texto, seleccionando objetos de un menú, etc.) y lo envían. El Web browser toma esta información y la empaca en un formato que puede ser enviado directamente a un servidor (servidor Web, servidor de correo, etc.), donde reside un programa que tomará esa información, la desempacará, la procesará y enviará una respuesta al usuario. En una página HTML un formulario se define por el par de etiquetas <form>....</form> y los diferentes elementos (controles) que estén incluidos dentro de ellas. El formato básico para escribir un formulario es el siguiente: <form action="[página o programa en el servidor]" method="get/post"> : : (otros elementos) : </form> donde: • •

El atributo action indica al servidor el nombre de la página o programa que recibirá y procesará los datos y es una de las consideraciones más importantes. El atributo method le indica al servidor cómo se le transmiten los datos del formulario, y se tienen dos opciones: GET o POST.

Programación

Arturo Ruvalcaba


21

Capítulo 4 Envío y recepción de datos

4.2 Métodos GET y POST La diferencia entre GET y POST radica en como se pasa la información del formulario al programa que lo procesa. El método GET envía toda la información recogida como parte de la URL. El método POST transmite la información de manera no visible al usuario. Cuando se elige cuál método usar hay que tener en cuenta tres factores: • • •

Con el método GET se puede pasar una cantidad limitada de información. El método GET envía los datos al servidor públicamente, lo que significa por ejemplo que una contraseña contenida en esos datos puede ser vista por cualquiera que pueda accesar los datos, lo que implica un riesgo. Una página generada por un formulario en el que se usó el método GET puede ser registrada, pero no una basada en el método POST.

El lenguaje PHP proporciona una manera sencilla de manejar formularios, permitiendo de esta manera procesar la información que el usuario ha introducido. Al diseñar un formulario se debe indicar la página PHP que lo procesará, así como el método usado para pasar la información de esa página.

4.3 Programa ejemplo para envío de datos A continuación un ejemplo muy sencillo de un programa html en el cual se envía un formulario. Nombre del programa: respuesta.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso8859-1" /> <title>Respuesta</title> </head> <body> Favor de llenar la forma para enviar su respuesta: <br /> <form action="maneja_resp.php" method="get"> Sr. <input type="radio" name="titulo" value="Sr." /> Sra. <input type="radio" name="titulo" value="Sra. /"> Srta. <input type="radio" name="titulo" value="Srta." /> <br /> Nombre: <input type="text" name="nombre" size="30" /> <br /> E-mail: <input type="text" name="email" size="20" /> <br /> Respuesta: <select name="respuesta"> <option value="excelente">Está excelente</option>

Programación

Arturo Ruvalcaba


22

Capítulo 4 Envío y recepción de datos

<option value="bueno">Está bueno</option> <option value="aburrido">Está aburrido</option> </select> <br /> Comentarios: <textarea name="comentarios" rows="3" cols="30"> </textarea> <br /> <input type="submit" name="envio" value="Enviar respuesta" /> </form> <!-- Script 3.1 - respuesta.html --> </body> </html>

4.4 Programa ejemplo para recibir datos Para procesar los datos enviados al servidor, debe existir en éste un programa que recibirá y procesará esos datos, el cual debe tener el mismo nombre que se especifica en el atributo action. El siguiente es el programa que procesará los datos enviados por el programa anterior. Nombre del programa: maneja_resp.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso8859-1" /> <title>Procesa respuesta</title> </head> <body> <?php // Script 3.2 - maneja_resp.php ini_set('display_errors', 1); error_reporting(E_ALL & E_NOTICE); // Esta página recibe los datos de respuesta.html // Recibe los datos: titulo, nombre, email, respuesta, comentarios y envío $titulo = $_POST['titulo']; $nombre = $_POST['nombre']; $respuesta = $_POST['respuesta']; $comentarios = $_POST['comentarios']; print "Gracias $titulo $nombre por sus comentarios. <br/>"; print "Usted dijo que encontró este libro $respuesta y agregó: $comentarios"; /*

Programación

Arturo Ruvalcaba


23

Capítulo 4 Envío y recepción de datos

print "Gracias {$_POST['titulo']} {$_POST['nombre']} por sus comentarios. <br/>"; print "Usted dijo que encontró este libro {$_POST['respuesta']} y agregó: {$_POST['comentarios']}"; */ ?> <!-- Script 3.2 – maneja_resp --> </body> </html>

4.5 Desplegar errores En las versiones actuales de PHP la opción para desplegar los errores existentes en un programa está deshabilitada, pero se puede habilitar de dos formas: • •

En archivo de configuración de PHP (php.ini) poner la variable display_errors = on. Cambiar la variable display_errors en el programa con la siguiente instrucción: ini_set (‘display_errors’, 1); y agregar: error_reporting (E_ALL & E_NOTICE);

En la primera opción el despliegue de errores queda habilitado para todos los programas que se corran, puede estar bien para los desarrolladores pero cuando se esta en etapa de producción. Con la segunda opción la función ini_set, con el parámetro = 1, cambia display_error = on temporalmente, o sea, sólo para el programa que tiene esas instrucciones permitiendo desplegar sus errores. La instrucción ini_set (‘display_errors’, 1); debe ser la primera después de <?php.

Programación

Arturo Ruvalcaba


4. Envio y recepcion de datos.