PHP: Interacción con HTML

34
PHP: Interacci´on con HTML Francisco J. Mart´ ın Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computaci´ on e Inteligencia Artificial Universidad de Sevilla Metodolog´ ıa de la Programaci´ on PHP: Interacci´ on con HTML

Transcript of PHP: Interacción con HTML

PHP: Interaccion con HTML

Francisco J. Martın MateosCarmen Graciani Diaz

Dpto. Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

Metodologıa de la Programacion PHP: Interaccion con HTML

Variables

En algunas ocasiones es necesario saber si una variable tieneun valor asignado o no, para ello utilizamos la instruccionisset()

Intentar utilizar una variable que no tenga valor asignadopuede dar lugar a errores inesperadosLa instruccion isset() recibe como argumento una variable ydevuelve TRUE si la variable esta definida y FALSE si no lo esta

Si queremos prescindir de una variable, podemos eliminarlautilizando la instruccion unset()

Esta instruccion recibe como argumento la variable que sequiere eliminarSi $A es un array asociativo entonces unset($A) elimina dichoarray y unset($A[’clave’]) elimina un elemento del array

Metodologıa de la Programacion PHP: Interaccion con HTML

Interaccion con formularios

Con PHP se pueden generar paginas Web dinamicas a partirde informacion proporcionada por el usuario

La forma natural de proporcionar informacion a traves depaginas Web es mediante formularios

Para que un documento PHP reciba la informacionprocedente de un formulario es necesario indicarlo comoaccion asociada a dicho formulario

Envio de datos a un documento PHP<FORM action="documento.php">

Usuario: <INPUT type="text"name="usuario"value="id"size="8"maxlength="16"> <BR>

Clave: <INPUT type="password"name="clave"size="8">

<INPUT type="submit"></FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Interaccion con formularios

En funcion del metodo de envıo utilizado en el formulario, losdatos llegan de distinta forma al documento PHP

Si el metodo de envıo es get, entonces los datos del formulariose almacenan en el array asociativo $ GET

Si el metodo de envıo es post, entonces los datos delformulario se almacenan en el array asociativo $ POST

Si se envıan ficheros desde el formulario (y por tanto elmetodo de envıo es post), entonces dichos ficheros sealmacenan en el array asociativo $ FILES

El metodo de envıo por defecto es get

Cada control activo del formulario tiene una entrada en elarray asociativo correspondiente, en la que la clave es el valorde atributo name de dicho control

El valor solo se envıa si se incluye el atributo name

Si varios controles activos tienen el mismo valor del atributoname, entonces solo se envıa el ultimo de ellos

Solo se recogen los datos del formulario desde el que se realizael envıo

Metodologıa de la Programacion PHP: Interaccion con HTML

Interaccion con formularios

Es usual que un documento PHP sea la accion asociada a losformularios contenidos en el propio documento

Para saber cuando el documento PHP es llamado comoaccion de un formulario se utiliza la funcion isset() sobre lasvariables procedentes del formulario

Metodologıa de la Programacion PHP: Interaccion con HTML

Interaccion con formularios

Fichero bienvenida.php

<HTML><HEAD>

<TITLE>Bienvenido a mi sitio Web</TITLE></HEAD>

<BODY><?phpif (isset($_POST[boton]) && $_POST[boton] == "datos") {

echo "<H3>Bienvenido $_POST[nombre] $_POST[apellidos]< /H3>";}?>

<H1>Acceso de usuario</H1>

<FORM action="bienvenida.php" method="post">Nombre: <INPUT type="text" name="nombre"> <BR>Apellidos: <INPUT type="text" name="apellidos"> <BR><INPUT type="submit" name="boton" value="datos">

</FORM>

</BODY></HTML>

Metodologıa de la Programacion PHP: Interaccion con HTML

Interaccion con formularios

Consideraremos el siguiente documento PHP generico querecoge los datos de un formulario y los muestra de formaordenada

Fichero documento.php

<HTML><HEAD>

<TITLE>Documento PHP de respuesta</TITLE></HEAD>

<BODY>

Variable $_GET:<PRE><?php print_r($_GET) ?></PRE>

Variable $_FILES:<PRE><?php print_r($_FILES) ?></PRE>

</BODY>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: campos de texto

El valor enviado por un formulario correspondiente a un campode texto es el texto que contiene en el momento del envıo

Si el usuario no modifica el campo de texto entonces el valorenviado sera el valor del atributo value

Si el campo de texto esta vacıo, el valor enviado sera la cadenavacıaAunque no se ve en el navegador, el valor de un campo detexto de tipo contrasena se envıa como cualquier otro

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: campos de texto

Datos procedentes de campos de texto

<FORM action="documento.php">Usuario: <INPUT type="text"

name="usuario"value="id"size="8"maxlength="16"> <BR>

Clave: <INPUT type="password"name="clave"size="8"> <BR>

<INPUT type="submit"></FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: campos de texto

Despues de modificar los campos de texto y enviar elformulario, el documento PHP genera el siguiente fragmentode codigo HTML

Datos procedentes de campos de texto

Variable $_GET:<PRE>Array(

[usuario] => fmartin[clave] => contrase na

)</PRE>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de opciones

El valor enviado por un formulario correspondiente a unaseleccion de opciones es el valor del atributo value indicadoen los controles que se hayan seleccionado

Solo se envıa la informacion de los controles seleccionadosSi no se indica un valor para el atributo value, el valor que seenvıa es onSi no se indican distintos valores para las opciones de unaseleccion de tipo radio, entonces el valor enviado sera siempreon y no servira para distinguir la opcion elegida

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de opciones

Datos procedentes de seleccion de opciones

<FORM action="documento.php">Sexo: <INPUT type="radio"

name="sexo"value="hombre"> Hombre <BR>

<INPUT type="radio"name="sexo"value="mujer"> Mujer <BR>

Edad: <INPUT type="radio"name="edad"> Menor de 18 <BR>

<INPUT type="radio"name="edad"> Mayor de 18 <BR>

Aficiones: <INPUT type="checkbox"name="hobby1"value="musica"> Musica <BR>

<INPUT type="checkbox"name="hobby2"> Cine <BR>

<INPUT type="checkbox"name="hobby3"> Lectura <BR>

<INPUT type="submit"></FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de opciones

Despues de seleccionar las opciones Hombre, Mayor de

18, Musica y Cine, el documento PHP genera el siguientefragmento de codigo HTML

Datos procedentes de seleccion de opciones

Variable $_GET:<PRE>Array(

[sexo] => hombre[edad] => on[hobby1] => musica[hobby2] => on

)</PRE>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: campos ocultos

El valor enviado por un formulario correspondiente a un campooculto es el valor del atributo value indicado en dicho campo

Datos procedentes de campos ocultos

<FORM action="documento.php">Usuario: <INPUT type="text"

value="id"name="usuario"> <BR>

Clave: <INPUT type="password"name="clave"> <BR>

<INPUT type="hidden"name="control"value="Campo oculto"> <BR>

<INPUT type="submit"></FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: campos ocultos

Al pulsar sobre el boton de envio de datos, el documento PHPgenera el siguiente fragmento de codigo HTML

Datos procedentes de campos ocultos

Variable $_GET:<PRE>Array(

[control] => Campo oculto)</PRE>

Metodologıa de la Programacion PHP: Interaccion con HTML

Botones

El valor enviado por un formulario correspondiente a un botones el valor del atributo value, siempre y cuando se hayaincluido el atributo name en el control correspondiente

Solo se envıa la informacion correspondiente al boton que seha pulsadoDe esta forma se puede distinguir que boton se ha pulsadopara enviar un formulario

Para los botones graficos de envıo de datos (control INPUT detipo image), el formulario tambien envıa las coordenadasdonde se encontraba el cursor al pulsarlo

Si se ha incluido el atributo name="Nombre", entonces lascoordenadas se envıan como valores de las claves Nombre x yNombre y

Si no se ha indicado el atributo name, entonces lascoordenadas se envıan como valores de las claves x e y

Metodologıa de la Programacion PHP: Interaccion con HTML

Botones

Datos procedentes de botones

<FORM action="documento.php"><INPUT type="submit" name="b1" value="Enviar"><INPUT type="reset" name="b2" value="Borrar"><INPUT type="button" name="b3" value="Acci on"> <BR><INPUT type="image" name="b4" value="Imagen"

src="correcto.png">

<BUTTON type="submit" name="b5" value="Enviar">Enviar</BUTTON>

<BUTTON type="reset" name="b6" value="Borrar">Borrar</BUTTON>

<BUTTON type="button" name="b7" value="Accion">Acci on</BUTTON> <BR>

<BUTTON type="submit" name="b8" value="Imagen"><IMG src="correcto.png"></BUTTON>

</FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Botones

Al pulsar sobre el boton grafico de envio de datos, eldocumento PHP genera el siguiente fragmento de codigoHTML

Datos procedentes de botones

Variable $_GET:<PRE>Array(

[b4_x] => 11[b4_y] => 9[b4] => Imagen

)</PRE>

Metodologıa de la Programacion PHP: Interaccion con HTML

Cuadro de seleccion

El valor enviado por un formulario correspondiente a uncuadro de seleccion es un array asociativo que almacenaindexados desde 0 los valores de las opciones seleccionadas

Si se trata de un campo de seleccion multiple, entonces elvalor del atributo name en la etiqueta SELECT tiene queterminar en corchetes []Si no se indican los corchetes [] en el valor del atributo name

en la etiqueta SELECT, entonces solo se envıa el ultimo valorseleccionado de la lista de opcionesEl atributo name en las opciones de seleccion no tiene ningunautilidad

Metodologıa de la Programacion PHP: Interaccion con HTML

Cuadro de seleccion

Datos procedentes de un cuadro de seleccion

<FORM action="documento.php">Aficiones:<SELECT align="top" name="aficiones[]"

size="3" multiple><OPTION name="o1" value="v1">Musica</OPTION><OPTION name="o2" value="v2">Cine</OPTION><OPTION name="o3" value="v3">Lectura</OPTION><OPTION name="o4" value="v4">Maquetas</OPTION><OPTION name="o5" value="v5">Fotograf´ıa</OPTION><OPTION name="o6" value="v6">Inform atica</OPTION>

</SELECT></FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Cuadro de seleccion

Al seleccionar las opciones Musica, Lectura yFotografıa, el documento PHP genera el siguientefragmento de codigo HTML

Datos procedentes de un cuadro de seleccion

Variable $_GET:<PRE>Array(

[aficiones] => Array(

[0] => v1[1] => v3[2] => v5

))</PRE>

Metodologıa de la Programacion PHP: Interaccion con HTML

Areas de texto

El valor enviado por un formulario correspondiente a un areade texto es el contenido de la etiqueta <TEXTAREA>

En este caso se ignora el valor del atributo value

Datos procedentes de un area de texto

<FORM action="documento.php"><TEXTAREA name="comentario"

value="Otro valor"rows="5"cols="20">

Escribe aqu´ı tus comentarios</TEXTAREA><INPUT type="submit">

</FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Areas de texto

Al pulsar sobre el boton grafico de envio de datos, eldocumento PHP genera el siguiente fragmento de codigoHTML

Datos procedentes de un area de texto

Variable $_GET:<PRE>Array(

[comentario] => Escribe aqu´ı tus comentarios)</PRE>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de ficheros

Si no se indica la codificacion de contenidoenctype="multipart/form-data" en la etiqueta FORM,entonces el valor enviado por un formulario correspondiente aun campo de seleccion de fichero es el contenido de dichocampo (el nombre del fichero)

Datos procedentes de una seleccion de ficheros

<FORM action="documento.php">Fichero: <INPUT type="file"

name="fichero"><INPUT type="submit">

</FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de ficheros

Al pulsar sobre el boton grafico de envio de datos, eldocumento PHP genera el siguiente fragmento de codigoHTML

Datos procedentes de una seleccion de ficheros

Variable $_GET:<PRE>Array(

[fichero] => /home/fmartin/Personal/simpsons.jpg)</PRE>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de ficheros

Si se indica la codificacion de contenidoenctype="multipart/form-data" en la etiqueta FORM,entonces el valor enviado por un formulario correspondiente aun campo de seleccion de fichero es un array asociativo con elnombre, el tipo, la localizacion temporal en el servidor, eltamano y un codigo de error, que se almacena en el arrayasociativo $ FILES

Datos procedentes de una seleccion de ficheros

<FORM action="documento.php"enctype="multipart/form-data">

Fichero: <INPUT type="file"name="fichero">

<INPUT type="submit"></FORM>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de ficheros

Al pulsar sobre el boton grafico de envio de datos, eldocumento PHP genera el siguiente fragmento de codigoHTML

Datos procedentes de una seleccion de ficheros

Variable $_FILES:<PRE>Array(

[fichero] => Array(

[name] => simpsons.jpg[type] => image/jpeg[tmp_name] => /tmp/phpI9bsPQ[error] => 0[size] => 175101

))</PRE>

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de ficheros

El fichero enviado se almacena en el servidor en la localizaciontemporal indicada

Dicho fichero deja de existir en cuanto se termina de enviar larespuesta al cliente

Para acceder al contenido de dicho fichero se ha de utilizar lafuncion PHP file get contents

Para preservar el fichero enviado, hay que almacenar elcontenido del fichero temporal en algun otro sitio

Metodologıa de la Programacion PHP: Interaccion con HTML

Control INPUT: seleccion de ficheros

Fichero contenido.php

<HTML><HEAD>

<TITLE>Documento PHP de respuesta</TITLE></HEAD>

<BODY>

El contenido del fichero que has enviado es: <BR><PRE><?php

echo file_get_contents($_FILES["fichero"][tmp_name]) ;?></PRE>

</BODY>

Metodologıa de la Programacion PHP: Interaccion con HTML

Sesiones

El registro de un usuario en una Web permite proporcionar aeste una version personalizada de la pagina Web solicitada

Las variables de registro (disponibles en $ GET o $ POST) soloexisten en el momento de establecer la comunicacion con elservidor

La comunicacion de un navegador con el servidor Web esefimera, solo se mantiene para una pagina Web cada vez

Las sesiones permiten mantener la comunicacion entre unnavegador y el servidor Web para un conjunto de paginas Web

Ası podemos personalizar todo un conjunto de paginas Webpara un mismo usuario sin necesidad de pedirle identificacion

Metodologıa de la Programacion PHP: Interaccion con HTML

Sesiones

Una sesion es una secuencia de comunicaciones sucesivasentre un navegador y un sitio Web a las que se les asigna unidentificador comun

Para utilizar sesiones en PHP lo primero es inicializarlas

De forma explıcita, mediante la funcion session start()

De forma implıcita, registrando una variable en la sesionmediante la funcion session register(’miVariable’)

Es conveniente que estas funciones aparezcan al comienzo delfichero, antes de cualquier otra instruccion PHP, etiquetaHTML o lınea en blanco

En ambos casos se crea una nueva sesion, si no existe, o seretoma la sesion actual

Las variables de sesion se almacenan en $ SESSION

La sesion termina

Cuando se cierra el navegador en que se inicioDe forma explıcita con la funcion session destroy()

Metodologıa de la Programacion PHP: Interaccion con HTML

Sesiones

Fichero sesion-0.php

<?phpsession_register(’contador’);session_register(’usuario’);$_SESSION[’usuario’] = ’fmartin’;?>

<HTML><HEAD>

<TITLE>Inicio de sesi on</TITLE></HEAD>

<BODY>

<A HREF="sesion-1.php">Otro documento de sesi on</A>

</BODY></HTML>

Metodologıa de la Programacion PHP: Interaccion con HTML

Sesiones

Fichero sesion-1.php

<?phpsession_start();$_SESSION[’contador’]++;?>

<HTML><HEAD>

<TITLE>Otro documento de sesi on</TITLE></HEAD>

<BODY>

<A HREF="sesion-1.php">Otro documento de sesi on</A> <BR><A HREF="sesion-2.php">Variables de sesi on</A>

</BODY></HTML>

Metodologıa de la Programacion PHP: Interaccion con HTML

Sesiones

Fichero sesion-2.php

<?phpsession_start();?>

<HTML><HEAD>

<TITLE>Variables de sesi on</TITLE></HEAD>

<BODY>

<PRE><?php print_r($_SESSION) ?></PRE>

<A HREF="sesion-2.php">Variables de sesi on</A>

</BODY></HTML>

<?phpsession_destroy();?>

Metodologıa de la Programacion PHP: Interaccion con HTML