PÁGINAS DINÁMICAS
WEB CON PHP
Unidad 4
Agenda del curso PHP 2009
APLICACIONES WEB
DIA 5
Administración de sesiones
(2 horas)
Uso de formularios en PHP
(2 horas)
Aplicaciones web
Variables predefinidas en PHP
(2 horas)
APLICACIONES WEB
Objetivos
Definir el término de aplicación web
Discutir la utilidad de las variables
predefinidas
Discutir como se procesan los formularios
Explicar la administración de las sesiones
APLICACIONES WEB
Componentes
Navegador Web
Este es el componente del lado del cliente Servidor Web
Este componente acepta solicitudes por páginas web hechas por el cliente y las retorna Recursos Externos
Las aplicaciones web necesitan acceder a la información o solicitar servicios de más de unaAPLICACIONES WEB
Variables Predefinidas en PHP
Array asociativo de pares (clave, valor) variables globales disponibles $GLOBALS Array asociativo de pares (clave,valor) de sesion $_SESSION Array asociativo de pares (clave,valor) del servidor $_SERVER Array asociativo de pares (clave,valor) del entorno $_ENVArray asociativo que contiene información de los ficheros recibidos mediante POST $_FILES Array asociativo de pares (clave,valor) pasados a través de POST $_POST Array asociativo de pares (clave,valor) pasados a través de GET $_GET Array asociativo de pares (clave,valor) pasados a través de cookies $_COOKIE Nombre del script que se está ejecutando $_SERVER['PHP_SELF'] Número de parametros pasados al script en su ejecución. $_SERVER['argc'] Array de argumentos pasados en la ejecución del script. argv
APLICACIONES WEB
Variables Predefinidas en PHP
Variables de Servidor $_SERVER
Se utiliza $_SERVER['elemento']
Nombre del host del usuario que accede a la página. 'REMOTE_HOST' Dirección IP del Cliente que accede a la página. 'REMOTE_ADDR' Directorio raíz de documentos bajo el cual está siendo ejecutado el script , tal y como está definido en el archivo de configuración. 'DOCUMENT_ROOT' Cadena de consulta mediante la cual se accedió a la página, si existe. 'QUERY_STRING' Indica cual método de solicitud fue usado para acceder a la página, como: GET, HEAD, POST o PUT 'REQUEST_METHOD' La dirección IP del servidor bajo el cual está siendo ejecutado el script. 'SERVER_ADDR' Nombre del servidor que se está ejecutando el script. 'SERVER_NAME' Nombre del script que se está ejecutando , relativo al directorio raíz. 'PHP_SELF' Contenido ElementoAPLICACIONES WEB
Variables Predefinidas en PHP
Ejercicio 1 mostrar variables de $_SERVER
<html> <head><title>Variables predefinidas Ejemplo</title></head> <body> <?php print "<h2>Variable \$_SERVER</h2>"; print "<hr>"; print "<b>El contenido de \$_SERVER es:</b><br>"; foreach ($_SERVER as $clave=>$valor){ echo "<b>$clave:</b> $valor <br>"; } ?> </body> </html>Agenda del curso PHP 2009
APLICACIONES WEB
DIA 5
Administración de sesiones
(2 horas)
Uso de formularios en PHP
(2 horas)
Aplicaciones web
Variables predefinidas en PHP
(2 horas)
APLICACIONES WEB
Uso de Formularios
Un formulario es un objeto DOM de HTML
Actúa como receptor de datos del cliente
Envía los datos al servidor web al script PHP
Estos datos de entrada son enviados a través r 'action'
Una sentencia de formulario puede ser:
form name="Form1" method="post" action="miscript.php">
<elementos del formulario>
</form>
Los elementos que puede contener un formulario
Botones: button, reset y submit.
Campos de texto: text, file, textarea, password y hiddes.
Componentes de selección: checkbox, radiobutton, select
APLICACIONES WEB
Uso de Formularios
Componentes de un formulario
<form name="Form1" method="post" action="miscript.php">
<elementos del formulario>
</form>
ACTION
indicamos el script que va procesar la
información que recogemos en el formulario
METHOD
nos indica si el usuario del formulario va
ha enviar datos (
post
) o recogerlos (
get
)
APLICACIONES WEB
Uso de Formularios
Diferentes tipos de elementos de entrada de
formulario
Elementos de tipo INPUT
TEXT
RADIO
CHECKBOX
BUTTON
FILE
HIDDEN
PASSWORD
SUBMIT
Elemento SELECT
Simple / múltiple
Elemento TEXTAREA
APLICACIONES WEB
Uso de Formularios
TEXT
Introduzca la cadena a buscar:
<INPUT TYPE="text" NAME="cadena" VALUE="valor por defecto" SIZE="20">
<?PHP
$cadena = $_REQUEST[‘cadena’]; print ($cadena);
APLICACIONES WEB
Uso de Formularios
RADIO
Sexo:
<INPUT TYPE="radio" NAME=“sexo" VALUE=“M“ CHECKED>Mujer
<INPUT TYPE="radio" NAME=“sexo" VALUE=“H">Hombre
<?PHP
$sexo = $_REQUEST[‘sexo’];
print ($sexo);
?>
APLICACIONES WEB
Uso de Formularios
CHECKBOX
<INPUT TYPE="checkbox" NAME="extras[]" VALUE="garaje" CHECKED>Garaje <INPUT TYPE="checkbox" NAME="extras[]" VALUE="piscina">Piscina <INPUT TYPE="checkbox" NAME="extras[]" VALUE="jardin">Jardín <?PHP $extras = $_REQUEST[‘extras’]; foreach ($extras as $extra) print (“$extra<BR>\n”);APLICACIONES WEB
Uso de Formularios
BUTTON
<INPUT TYPE="button" NAME=“actualizar" VALUE="Actualizar datos"> <?PHP $actualizar = $_REQUEST[‘actualizar’]; if ($actualizar) print ("Se han actualizado los datos"); ?>APLICACIONES WEB
Uso de Formularios
FILE
<FORM ACTION="procesa.php" METHOD="post“ ENCTYPE="multipart/formdata"> <INPUT TYPE="file" NAME="fichero"> </FORM>APLICACIONES WEB
Uso de Formularios
HIDDEN
<?PHP print(“<INPUT TYPE=’hidden’ NAME=’username’ VALUE=’$usuario’>\n”); ?> <?PHP $username = $_REQUEST[‘username’]; print ($username); ?>APLICACIONES WEB
Uso de Formularios
PASSWORD
Contraseña: <INPUT TYPE="password" NAME="clave"> <?PHP $clave = $_REQUEST[‘clave’]; print ($clave); ?>APLICACIONES WEB
Uso de Formularios
SUBMIT
<INPUT TYPE="submit" NAME="enviar" VALUE="Enviar datos"> <?PHP $enviar = $_REQUEST[‘enviar’]; if ($enviar) print ("Se ha pulsado el botón de enviar"); ?>APLICACIONES WEB
Uso de Formularios
SELECT simple
Color: <SELECT NAME=“color"> <OPTION VALUE=“rojo" SELECTED>Rojo <OPTION VALUE=“verde">Verde <OPTION VALUE=“azul">Azul </SELECT> <?PHP $color = $_REQUEST[‘color’]; print ($color);APLICACIONES WEB
Uso de Formularios
TEXTAREA
Comentario: <TEXTAREA COLS=“50" ROWS=“4" NAME="comentario"> Este libro me parece ... </TEXTAREA> <?PHP $comentario = $_REQUEST[‘comentario’]; print ($comentario); ?>APLICACIONES WEB
Uso de Formularios
Ejercicio 2
Programa que muestra los datos introducidos
desde un formulario
Ilustra cómo acceder a los valores introducidos
desde todos los tipos de elementos de entrada
de un formulario, con excepción de los tipos
BUTTON y FILE, que se tratan en ejercicios
posteriores
APLICACIONES WEB
Uso de Formularios
La forma habitual de trabajar con formularios en PHP es
utilizar un único programa que procese el formulario o lo
muestre según haya sido o no enviado, respectivamente
Ventajas:
Disminuye el número de ficheros
Permite validar los datos del formulario en el propio formulario
Procedimiento:
si se ha enviado el formulario: Procesar formulario si no: Mostrar formulario fsiAPLICACIONES WEB
Uso de Formularios
Esquema de funcionamiento:
si se ha enviado el formulario: Procesar formulario si no: Mostrar formulario fsi a) b) La 1ª vez que se carga la página se muestra el formulario (a) La 2ª vez se procesa el formulario (b)APLICACIONES WEB
Uso de Formularios
Para saber si se ha enviado el formulario se
acude a la variable correspondiente al botón de
envío. Si este botón aparece de la siguiente forma
en el formulario HTML:
<INPUT TYPE="SUBMIT" NAME="enviar"
VALUE="procesar">
entonces la condición anterior se transforma en:
if (isset($_REQUEST['$enviar']))
o bien
APLICACIONES WEB
Uso de Formularios
Ejercicio 3: formulario de PHP
Ilustra cómo crear páginas multipropósito que
sirven tanto para mostrar un formulario como
para procesarlo
a) b)APLICACIONES WEB
Uso de Formularios
<HTML> <BODY> <FORM METHOD="post" ACTION="misdatos.php"> <input type="hidden" name="edad" value="55"> <p>Tu nombre <input type="text" name="nombre" size="30" value="jose"></p> <p>Tu sistema favorito <select size="1" name="sistema"> <option selected value="Linux">Linux</option> <option value="Unix">Unix</option> <option value="Macintosh">Macintosh</option> <option value="Windows">Windows</option> </select>APLICACIONES WEB
Uso de Formularios
<p>¿ Te gusta el futbol ? <input type="checkbox" name="futbol" value="ON"></p> <p>¿ Cual es tu sexo?</p> <blockquote> <p>Hombre<input type="radio" value="hombre" name="sexo" checked></p> <p>Mujer <input type="radio" value="mujer" name="sexo"></p> </blockquote> <p>Aficiones</p> <p><textarea rows="5" name="aficiones" cols="28"></textarea></p> <p><input type="submit" value="Enviar datos" name="enviar"> <input type="reset" value="Restablecer" name="B2"></p> </FORM> </BODY>APLICACIONES WEB
Uso de Formularios
<p>¿ Te gusta el futbol ? <input type="checkbox" name="futbol" value="ON"></p> <p>¿ Cual es tu sexo?</p> <blockquote> <p>Hombre<input type="radio" value="hombre" name="sexo" checked></p> <p>Mujer <input type="radio" value="mujer" name="sexo"></p> </blockquote> <p>Aficiones</p> <p><textarea rows="5" name="aficiones" cols="28"></textarea></p> <p><input type="submit" value="Enviar datos" name="enviar"> <input type="reset" value="Restablecer" name="B2"></p> </FORM> </BODY> <HTML>APLICACIONES WEB
Uso de Formularios
<?php if (@$_POST['enviar']) { $nombre=$_POST['nombre']; $sexo=$_POST['sexo']; $edad=$_POST['edad']; $sistema=$_POST['sistema']; $futbol=$_POST['futbol']; $aficiones=$_POST['aficiones']; echo "Hola <b>".$nombre."</b> como estás<BR>\n"; echo "Eres " . $sexo . "<BR>\n"; echo "Tienes " . $edad . "<BR>\n"; echo "Tu sistema favorito es " . $sistema . "<BR>\n";APLICACIONES WEB
Uso de Formularios
if ($aficiones != "") { echo "Tus aficiones son: <BR>\n"; echo nl2br($aficiones); } else { echo "NO tienes aficiones <BR>\n"; } echo "<br><a href=".$_SERVER['PHP_SELF'].">VOLVER AL FORMULARIO</a>" ; } else { ?> <HTML> <BODY> <FORM METHOD="post" ACTION="<?PHP echo $_SERVER['PHP_SELF'] ? >"> <input type="hidden" name="edad" value="45"> <p>Tu nombre <input type="text" name="nombre" size="30" value="jose"></p>APLICACIONES WEB
Uso de Formularios
<p>Tu sistema favorito <select size="1" name="sistema"> <option selected value="Linux">Linux</option> <option value="Unix">Unix</option> <option value="Macintosh">Macintosh</option> <option value="Windows">Windows</option> </select></p> <p>¿Te gusta el futbol ? <input type="checkbox" name="futbol" value="on" ></p> <p>¿Cual es tu sexo?</p> <blockquote> <p>Hombre<input type="radio" value="hombre" checked name="sexo"></p> <p>Mujer <input type="radio" value="mujer" name="sexo" ></p> </blockquote> <p>Aficiones</p> <p><textarea rows="5" name="aficiones" cols="28"></textarea></p> <p><input type="submit" value="Enviar datos" name="enviar">APLICACIONES WEB
Uso de Formularios
Para subir un fichero al servidor se utiliza el
elemento de entrada FILE
Hay que tener en cuenta una serie de
consideraciones importantes:
El elemento FORM debe tener el atributo
ENCTYPE="multipart/formdata“
El fichero tiene un límite en cuanto a su tamaño. Este
límite se fija de dos formas diferentes:
En el fichero de configuración php.ini
En el propio formulario
APLICACIONES WEB
Uso de Formularios
;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. file_uploads = On ; Temporary directory for HTTP uploaded files (will use ; system default if not specified). ;upload_tmp_dir = ; Maximum allowed size for uploaded files. upload_max_filesize = 2Mphp.ini
Subida de ficheros al servidor
APLICACIONES WEB
Uso de Formularios
Para subir un fichero al servidor se utiliza el
elemento de entrada FILE
Hay que tener en cuenta una serie de
consideraciones importantes:
El elemento FORM debe tener el atributo
ENCTYPE="multipart/formdata“
El fichero tiene un límite en cuanto a su tamaño. Este
límite se fija de dos formas diferentes:
En el fichero de configuración php.ini
En el propio formulario
APLICACIONES WEB
Uso de Formularios
Consideraciones (cont)
Debe darse al fichero un nombre que evite coincidencias con ficheros ya subidos. Por ello, y como norma general, debe descartarse el nombre original del fichero y crear uno nuevo que sea único El fichero subido se almacena en un directorio temporal y hemos de moverlo al directorio de destino usando la función move_upload_file() Procedimiento:
si se ha subido correctamente el fichero: Asignar un nombre al fichero
Mover el fichero a su ubicación definitiva
APLICACIONES WEB
Uso de Formularios
La variable $_FILES contiene toda la información del Archivo subido:
$_FILES['imagen']['name']
Nombre original del fichero en la máquina cliente
$_FILES['imagen']['type']
Tipo mime del fichero. Por ejemplo, "image/gif"
$_FILES['imagen']['size']
Tamaño en bytes del fichero subido
$_FILES['imagen']['tmp_name']
Nombre del fichero temporal en el que se almacena el fichero subido en el servidor
$_FILES['imagen’]['error']
Código de error asociado al fichero subido
<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="102400"> <INPUT TYPE="FILE" SIZE="44" NAME="imagen">
APLICACIONES WEB
Uso de Formularios
if (is_uploaded_file ($_FILES['imagen']['tmp_name'])) { $nombreDirectorio = "img/"; $idUnico = time();$nombreFichero = $idUnico . "-" . $_FILES['imagen']['name']; move_uploaded_file ($_FILES['imagen']['tmp_name'],
$nombreDirectorio . $nombreFichero); }
else
print ("No se ha podido subir el fichero\n");
APLICACIONES WEB
Uso de Formularios
Validar Formularios
Esquemade funcionamiento:
si se ha enviado el formulario: validar datos fsisi se ha enviado y no hay errores: Procesar formulario si no: Mostrar formulario fsi a) b) c) ● La 1ª vez que se carga la página se muestra el formulario (a) ● La 2ª y sucesivas veces se validan los datos ● Si hay errores, se muestra de nuevo el formulario con los errores (b) Si no hay, se procesa el formulario (c)