desarrollo de aplicaciones php para bases de datos almería 2007

70
Antonio Becerra Terón [email protected] Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones PHP para bases de datos Almería 2007 Lenguajes de Desarrollo. PHP

Upload: jennifer-doyle

Post on 03-Jan-2016

37 views

Category:

Documents


2 download

DESCRIPTION

Desarrollo de aplicaciones PHP para bases de datos Almería 2007. Lenguajes de Desarrollo. PHP. Antonio Becerra Terón [email protected] Departamento de Lenguajes y Computación Universidad de Almer í a. Desarrollo de aplicaciones PHP para bases de datos Almería 2007. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Antonio Becerra Teró[email protected]

Departamento de Lenguajes y ComputaciónUniversidad de Almería

Desarrollo de aplicaciones PHP para

bases de datos Almería 2007

Lenguajes de Desarrollo. PHP

Page 2: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Contenidos

10. Paso de variables entre scripts PHP11. Formularios en PHP

12. Scripts de autenticación y sesiones13. Cookies en PHP

14. Gestión de envío de archivos en PHP

Desarrollo de aplicaciones PHP

para bases de datos

Almería 2007

Lenguajes de Desarrollo. PHP

Page 3: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Desarrollo de aplicaciones PHP

para bases de datos

Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos

10. Paso de variables entre scripts PHP11. Formularios en PHP

12. Scripts de autenticación y sesiones13. Cookies en PHP

14. Gestión de envío de archivos en PHP

Page 4: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Paso de variables por URL

10. Paso de variables entre scripts PHP

En un sitio Web, las páginas y los scripts utilizados son muy numerosos. Muy a menudo, vamos a necesitar que nuestros distintos scripts estén conectados unos con otros, y, sobretodo, que se sirvan y se pasen variables comunes.

<a href="destino.php?variable1=valor1&variable2=valor2&...">Mi enlace</a>

• Estas variables no tienen el símbolo $ delante• Una vez realizado el paso, nuestras variables pertenecen al entorno de la página destino.php• Activada/desactivada la opción de configuración register_globals del archivo php.ini

Page 5: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Paso de variables por URL

10. Paso de variables entre scripts PHP

phporiegenurl.php<HTML><HEAD><TITLE>phporigenurl.php</TITLE></HEAD><BODY><?PHP$username = "abecerra";?><a href="destino.php?saludo=hola&texto= Esto es una variable texto&username= <?php echo $username;?>"> Paso variables saludo y texto a la página

destino.php</a></BODY></HTML>

Page 6: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Paso de variables por URL

10. Paso de variables entre scripts PHP

destino.php<HTML><HEAD><TITLE>destino.php</TITLE></HEAD><BODY><?echo "Variable \$saludo: $saludo <br>\n";echo "Variable \$texto: $texto <br>\n";echo "Variable \$username: $username

<br>\n";?></BODY></HTML>

register_globals On en php.ini

Page 7: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Paso de variables con $_GET

10. Paso de variables entre scripts PHP

destinoget.php<HTML><HEAD><TITLE>destinoget.php</TITLE></HEAD><BODY><?// Captura de las variables pasadas por la

URL$saludo = $_GET['saludo'];$texto = $_GET['texto'];$username = $_GET['username'];echo "Variable \$saludo: $saludo <br>\n";echo "Variable \$texto: $texto <br>\n";echo "Variable \$username: $username

<br>\n";?></BODY></HTML>

register_globals Off en php.ini

phporiegenurl.php...<a href="destinoget.php?saludo=hola&texto= Esto es una variable texto&username= <?php echo $username;?>">...

Page 8: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Paso de variables con $_GET

10. Paso de variables entre scripts PHP

register_globals Off en php.ini

destinoget.php<HTML><HEAD><TITLE>destinoget.php</TITLE></HEAD><BODY><?// Captura de las variables pasadas por la

URL$saludo = $_GET['saludo'];$texto = $_GET['texto'];$username = $_GET['username'];echo "Variable \$saludo: $saludo <br>\n";echo "Variable \$texto: $texto <br>\n";echo "Variable \$username: $username

<br>\n";?></BODY></HTML>

Page 9: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Desarrollo de aplicaciones PHP

para bases de datos

Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos

10. Paso de variables entre scripts PHP11. Formularios en PHP

12. Scripts de autenticación y sesiones13. Cookies en PHP

14. Gestión de envío de archivos en PHP

Page 10: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

• Presentar una primera página con el formulario clásico a rellenar• Las variables del formularios son recogidas en una segunda página que las procesa

<FORM action="lo_que_sea.php" method="POST/GET">

script PHP que procesa lainformación del formulario

POST: usuario envía datosGET: usuario recoge datos

register_globals Off en php.ini

Page 11: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

Page 12: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

Page 13: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

Page 14: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

Page 15: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

phpdestino.php<HTML><HEAD><TITLE>phpdestino.php</TITLE></HEAD><BODY><?PHP$nombre = $_POST['nombre'];$apellidos = $_POST['apellidos'];echo "Variable \$nombre: $nombre <br>\n";echo "Variable \$apellidos: $apellidos <br>\n"?></BODY></HTML>

Page 16: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

phpdestino.php<HTML><HEAD><TITLE>phpdestino.php</TITLE></HEAD><BODY><?PHP$nombre = $_POST['nombre'];$apellidos = $_POST['apellidos'];echo "Variable \$nombre: $nombre <br>\n";echo "Variable \$apellidos: $apellidos <br>\n"?></BODY></HTML>

Page 17: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

phpdestino.php<HTML><HEAD><TITLE>phpdestino.php</TITLE></HEAD><BODY><?PHP$nombre = $_POST['nombre'];$apellidos = $_POST['apellidos'];echo "Variable \$nombre: $nombre <br>\n";echo "Variable \$apellidos: $apellidos <br>\n"?></BODY></HTML>

Page 18: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

phpdestino.php<HTML><HEAD><TITLE>phpdestino.php</TITLE></HEAD><BODY><?PHP$nombre = $_POST['nombre'];$apellidos = $_POST['apellidos'];echo "Variable \$nombre: $nombre <br>\n";echo "Variable \$apellidos: $apellidos <br>\n"?></BODY></HTML>

Page 19: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

phpdestino.php<HTML><HEAD><TITLE>phpdestino.php</TITLE></HEAD><BODY><?PHP$nombre = $_POST['nombre'];$apellidos = $_POST['apellidos'];echo "Variable \$nombre: $nombre <br>\n";echo "Variable \$apellidos: $apellidos <br>\n"?></BODY></HTML>

Page 20: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpformu1.php<HTML><HEAD><TITLE>phpformu1.php</TITLE></HEAD><BODY><FORM METHOD="POST" ACTION="phpdestino.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

Page 21: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Procesar variables de formularios en PHP

11. Formularios en PHP

phpdestino.php<HTML><HEAD><TITLE>phpdestino.php</TITLE></HEAD><BODY><?PHP$nombre = $_POST['nombre'];$apellidos = $_POST['apellidos'];echo "Variable \$nombre: $nombre <br>\n";echo "Variable \$apellidos: $apellidos <br>\n"?></BODY></HTML>

Page 22: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Restricción de acceso por edad

11. Formularios en PHP

edad.php<html>

<head>   <title>Restringir por edad</title>

</head> <body> <form action="edad2.php" method="post">

Escribe tu edad: <input type="text" name="edad" size =

"2"> <input type="submit" value="Entrar"> </form>

</body> </html>

edad2.php<html>

<head>    <title>Restringir por edad</title>

</head> <body> <? $edad = $_POST["edad"];

echo "Tu edad: $edad<p>"; if ($edad < 18) {    echo "No puedes entrar"; }else{

   echo "Bienvenido"; }

?> </body> </html>

Page 23: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Restricción de acceso por edad

11. Formularios en PHP

Page 24: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Restricción de acceso por edad

11. Formularios en PHP

Page 25: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Formulario habitual

11. Formularios en PHP

phpformunormal.php <HTML><BODY><FORM METHOD="post" ACTION="mis_datos.php"><input type="hidden" name="edad" value="55"><p>Tu nombre <input type="text" name="nombre" size="30" value="antonio becerra"></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></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" name="sexo" value="mujer"></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>

Page 26: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Formulario habitual

11. Formularios en PHP

Page 27: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Formulario habitual

11. Formularios en PHP

mis_datos.php <?PHP$enviar = $_POST['enviar'];$nombre = $_POST['nombre'];$sexo = $_POST['sexo'];$edad = $_POST['edad'];$sistema = $_POST['sistema'];$futbol = $_POST['futbol'];$aficiones = $_POST['aficiones'];if ($enviar) {echo "Hola <b>" . $nombre . "</b> que tal estás<BR>\n";echo "Eres " . $sexo . "<BR>\n";echo "Tienes " . $edad . "<BR>\n";echo "Tu sistema favorito es " . $sistema . "<BR>\n";if ($futbol) {echo "Te gusta el futbol <BR>\n";}

else {echo "NO te gusta el futbol <BR>\n";}if ($aficiones != "") {echo "Tus aficiones son: <BR>\n";echo nl2br($aficiones);} else {echo "NO tienes aficiones <BR>\n";}}echo "<br>";echo “<a href=phpformunormal.php>VOLVER AL FORMULARIO</a>"?>

Page 28: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Formulario habitual

11. Formularios en PHP

Page 29: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Formulario más complejo

11. Formularios en PHP

phpformucomplex.php <?phpif (isset($_POST['Accion'])){ print '<pre>'; print_r($_POST); echo "<a href= $_SERVER[PHP_SELF]

> Por favor, intentálo de

nuevo</a>"; print '</pre>';}else{?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">Nombre: <input type="text" name="personal[nombre]"><br>

Email: <input type="text" name="personal[email]"><br>Cerveza: <br> <select multiple name="beer[ ]"><option value="warthog">Warthog</option><option value="guinness">Guinness</option><option value="stuttgarter">Stuttgarter Schwabenbräu</option></select><br><input type="hidden" name="Accion" value="enviado"> <input type="submit" name="Enviar" value="Envíame!"></form><?PHP} ?>

Page 30: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Formulario más complejo

11. Formularios en PHP

Page 31: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejercicio de Formulario

11. Formularios en PHP

Page 32: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Desarrollo de aplicaciones PHP

para bases de datos

Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos

10. Paso de variables entre scripts PHP11. Formularios en PHP

12. Scripts de autenticación y sesiones13. Cookies en PHP

14. Gestión de envío de archivos en PHP

Page 33: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Scripts de autenticación

12. Scripts de autenticación y sesiones en PHP

Autenticación basada en contraseñasphpinicio_sesion.php<HTML><HEAD><TITLE>Inicio de sesión</TITLE></HEAD><BODY bgcolor="Aqua"><FORM name="form1" method="POST" action="phpautenticacion.php"><TABLE width="400"><TR> <td colspan="2"> <div align="center"><B>Introduzca un nombre de usuario y una contraseña</B></DIV></TD></TR><TR><TD> <DIV align="right">Nombre de usuario:</DIV></TD><TD><INPUT type="text" name="username"></TD></TR>

<TR><TD><DIV align="right">Contraseña</DIV></TD><TD><INPUT type="pasword" name="password" maxlength="15"></TD></TR><TR><TD colspan="2"><CENTER><INPUT type="submit" name="submit" value="Enviar"></CENTER></TD></TR></TABLE></FORM></BODY><HTML>

Page 34: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Scripts de autenticación

12. Scripts de autenticación y sesiones en PHP

Page 35: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Scripts de autenticación

12. Scripts de autenticación y sesiones en PHP

phpautenticacion.php<HTML><HEAD><TITLE>Página de autenticación</TITLE></HEAD><BODY bgcolor="Gray"><?PHP$username = $_POST['username'];$password = $_POST['password'];if (empty($password)){ die("No se ha introducido la contraseña");}if (strlen($password) < 5){ die("La contraseña introducida es demasiado corta");}

if (!(strcmp($password,"antonio"))){ echo "Bienvenido a su página de inicio " . "<b>" . $username . "</b><br>";}else{ die("No ha introducido la contraseña correcta");}?></BODY></HTML>

Page 36: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Scripts de autenticación

12. Scripts de autenticación y sesiones en PHP

Page 37: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Autenticación HTTP

12. Scripts de autenticación y sesiones en PHP

Sólo disponible cuando PHP se ejecuta como módulo de ApacheFunción header()

Autenticación controlada por variables predefinidas PHP

$_SERVER[‘PHP_AUTH_USER’]$_SERVER[‘PHP_AUTH_PW’]

$_SERVER[‘AUTH_TYPE’]

Page 38: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Autenticación HTTP

12. Scripts de autenticación y sesiones en PHP

php-autenticacion.php<?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="Acceso a Zona Restringida"'); header('HTTP/1.0 401 Unauthorized'); echo '<h1>Autorización Requerida</h1>'; exit; } else { echo "<p>Hola " . $_SERVER['PHP_AUTH_USER'] . ".</p>"; echo "<p>Has introducido " . $_SERVER['PHP_AUTH_PW'] . " como contraseña.</p>"; } ?>

Page 39: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Autenticación HTTP

12. Scripts de autenticación y sesiones en PHP

Page 40: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Autenticación HTTP

12. Scripts de autenticación y sesiones en PHP

</head><body>Ha conseguido el acceso a la <B>zona restringida</B> de <? echo $_SERVER['PHP_AUTH_USER'];?></body></html>

php-autenticacion-abecerra.php<?php if (($_SERVER['PHP_AUTH_USER']!="abecerra") || ($_SERVER['PHP_AUTH_PW']!="123")){ header('WWW-Authenticate: Basic realm="Acceso restringido"'); header('HTTP/1.0 401 Unauthorized'); echo '<H2>Authorization Required.</H2>'; exit;}?><html><head><title>Ejemplo de Autenticación HTTP con PHP</title>

Page 41: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Autenticación HTTP

12. Scripts de autenticación y sesiones en PHP

Page 42: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Control y manejo de sesiones

12. Scripts de autenticación y sesiones en PHP

Sesión = intervalo de tiempo empleado por un usuario en recorrer nuestras páginas, hasta que:

• abandona nuestro sitio,• deja de actuar sobre él durante un tiempo prolongado,

• cierra el navegador

PHP nos permite almacenar variables de sesión que, una vez definidas, podrán ser utilizadas durante la actividad

del usuario por cualquiera de los scripts de nuestro sitio Web

Hemos utilizado variables que sólo existían en el script ejecutado. ¿Cuál es el problema?

Cargamos otra página distinta y los valores de estas variables se pierden a menos que pasemos estos valores por la URL,

o en un formulario para su posterior explotación

Page 43: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Funciones para control de sesiones

12. Scripts de autenticación y sesiones en PHP

Inicio y registro de la sesión

bool session_start ( void )

bool session_register ( mixed nombre [, mixed ...])

register_globals On/Off en php.ini

register_globals On en php.ini

$_SESSION[‘nombrevarsesion’ ] = valorregister_globals Off en php.ini

Idetificación de sesión

string session_id ( [string id])register_globals On/Off en php.ini

Page 44: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Funciones para control de sesiones

12. Scripts de autenticación y sesiones en PHP

Asignación de nombre a la sesión

string session_name ( [string nombre])register_globals On/Off en php.ini

<?php// Cambiar el nombre de la sesión a WebsiteID$nombre_anterior = session_name("WebsiteID");echo "El anterior nombre de la sesión era $nombre_anterior<p>";echo "Mientras que el nuevo es " . session_name();?>

Page 45: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Funciones para control de sesiones

12. Scripts de autenticación y sesiones en PHP

Comprobación de registro de sesión

bool session_is_registered ( string nombre ) register_globals On en php.ini

if (isset($_SESSION[‘nombrevarsesion’ ]))register_globals Off en php.ini

Borrado de la sesión

bool session_destroy ( void )register_globals On/Off en php.ini

Page 46: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Funciones para control de sesiones

12. Scripts de autenticación y sesiones en PHP

Eliminar variables de sesión

void session_unset ( void )register_globals On en php.ini

unset($_SESSION[‘nombresvarsesion’ ])register_globals Off en php.ini

Page 47: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplos de control de sesiones

12. Scripts de autenticación y sesiones en PHP

Page 48: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplos de control de sesiones

12. Scripts de autenticación y sesiones en PHP

phpunset.php<?phpsession_name("abecerra");session_start();unset($_SESSION['abecerra']);echo "Acabo de eliminar la variable de sesión <b>" . session_name() ."</b>";?>

Page 49: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplo de control de autenticación

12. Scripts de autenticación y sesiones en PHP

phplogin.php phpsesion.php miinicio.php

Proceso deautenticación

Definir el entorno de sesión

Página deinicio de usuario

No inicio de sesión

mipagina2.php

Segunda página deinicio de usuario

No inicio de sesión

logout.php

Destruir el entornode la sesión

Presentar ejemplo por pantalla

Page 50: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplo de control de autenticación

12. Scripts de autenticación y sesiones en PHP

phplogin.php<HTML><HEAD><TITLE>Inicio de sesión</TITLE></HEAD><BODY bgcolor="Aqua"><FORM name="form1" method="POST" action="phpsesion.php"><TABLE width="400"> <TR> <td colspan="2"> <div align="center"><B>Introduzca un nombre de usuario y una contraseña</B></DIV> </TD></TR><TR> <TD><DIV align="right">Nombre de usuario:</DIV></TD><TD><INPUT type="text" name="username"></TD></TR>

<TR><TD><DIV align="right">Contraseña</DIV></TD><TD><INPUT type="password" name="password" maxlength="15"></TD></TR><TR><TD colspan="2"><CENTER><INPUT type="submit" name="submit" value="Enviar"></CENTER></TD></TR></TABLE></FORM></BODY><HTML>

Page 51: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplo de control de autenticación

12. Scripts de autenticación y sesiones en PHP

phpsesion.php<?PHP// Obteniendo las variables externas // del inicio de sesion$username = $_POST['username'];$password = $_POST['password'];// Definición del entorno de sesionsession_start();$_SESSION['username']=$username;// Autenticando la contraseñaif (empty($password)){ unset($_SESSION['username']); die("No se ha introducido la contraseña. <a href=phplogin.php>Vuelva a intentarlo");}if (strlen($password) < 5){ unset($_SESSION['username']); die("La contraseña introducida es demasiado corta.

<a href=phplogin.php>Vuelva a intentarlo");}// Enviando a la página de inicio del usuario$url = "Location:miinicio.php";header($url);?>

Page 52: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplo de control de autenticación

12. Scripts de autenticación y sesiones en PHP

miinicio.php<?PHP// Iniciar la sesiónsession_start();// Obtener el entorno de la sesión y comprobar // que esté definido. if (!isset($_SESSION['username'])){session_destroy(); die ("Por favor, <a href=phplogin.php>inicie, primero, la sesión");}?><HTML><HEAD><TITLE> Mi página de inicio</TITLE></HEAD><BODY bgcolor="Silver" text="Red"><TABLE width="330" border="10" align="center"

cellpadding="5"cellspacing="2"><TR><TD>

<DIV align="center"><B>Bienvenido a la página de inicio de <?PHP echo $_SESSION['username'];?><B></DIV>...<CENTER><B> ¡¡ Mi Página de Inicio !! </B></CENTER>...<CENTER><a href="mipagina2.php">Página 2</a></CENTER>...<CENTER><a href="logout.php">Cerrar la sesión</a></CENTER>

Page 53: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplo de control de autenticación

12. Scripts de autenticación y sesiones en PHP

mipagina2.php<?PHP// Iniciar la sesiónsession_start();// Obtener el entorno de la sesión y// comprobar que esté definido. if (!isset($_SESSION['username'])){ session_destroy(); die ("Por favor, <a href=phplogin.php>inicie, primero, la sesión");}?><HTML><HEAD><TITLE> Mi página 2</TITLE></HEAD><BODY><TABLE width="330" border="10" align="center"

cellpadding="5"cellspacing="2"><TR><TD>

<DIV align="center"><B>Bienvenido a la zona privada de <?PHP echo $_SESSION['username'];?><B></DIV>...<CENTER><B> ¡¡ Mi Página 2 !! </B></CENTER>...<CENTER><a href="miinicio.php">Página de Inicio de <?PHP echo $_SESSION['username']; ?></a></CENTER>...<a href="logout.php">Cerrar la sesión</a></CENTER>

Page 54: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplo de control de autenticación

12. Scripts de autenticación y sesiones en PHP

logout.php<?PHP// Iniciar la sesiónsession_start();// Obtener el entorno de la sesión y // comprobar que esté definidoif (isset($_SESSION['username'])){ // Caso de que la sesión esté definida unset($_SESSION['username']); session_destroy(); $url = "Location:phplogin.php"; header($url);}else { die("Sólo los usuarios registrados pueden cerrar la sesión. <a href=phplogin.php>Inicie primero la sesión");}?>

Page 55: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejercicio de carrito de la compra

12. Scripts de autenticación y sesiones en PHP

Page 56: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Desarrollo de aplicaciones PHP

para bases de datos

Almería 2007

Lenguajes de Desarrollo. PHP

Contenidos

10. Paso de variables entre scripts PHP11. Formularios en PHP

12. Scripts de autenticación y sesiones13. Cookies en PHP

14. Gestión de envío de archivos en PHP

Page 57: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Control y manejo de cookies

13. Cookies en PHP

Ingredientes de una cookieIngredientes de una cookie:nombre

valorfecha de caducidad

dominio desde el que se puede leer la cookieruta dentro del servidor

seguridadLimitaciones de las cookiesLimitaciones de las cookies:

300 cookies en total4KBytes por cookie

20 cookies por servidor o dominio

Pequeños archivos de texto que contienen informaciónpara identificar al cliente y personalizar su navegación

Page 58: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Creación de cookies

bool setcookie ( string nombre, string valor, int expirar, string ruta, string dominio, bool segura)

Llamadas a las cookies antes que cualquier salidaLlamadas a las cookies antes que cualquier salidacabeceras http – antes que <html> y <head>cabeceras http – antes que <html> y <head>

13. Cookies en PHP

Ejemplos de cookies

<? setcookie("saludo");?>

<? setcookie("saludo",

"hola");?>

<? // Esta cookie dura una hora. 1 hora = 3600

segundos setcookie("visitas", "1", time()+3600);?>

Page 59: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

13. Cookies en PHP

Ejemplos de cookies<? // Esta cookie dura un año setcookie("visitas", "1", time()

+60*60*24*365);?>

php-setcookie.php<? $valor = "algo desde algun lugar"; setcookie("cookiedeprueba",$valor, time() + 3600); /*

expira en una hora */?>

Page 60: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Lectura de cookies

$_COOKIE[‘nombre_cookie’]

13. Cookies en PHP

Ejemplos de cookies

php-leercookie.php<? // Imprime una cookie echo $_COOKIE['cookiedeprueba'] . "<br>"; // Otra forma de depurar las cookies echo "<pre>"; print_r($_COOKIE); echo "</pre>";?>

Page 61: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Eliminación de cookies

Crear la cookie con valor vacío y tiempo de vida pasado

13. Cookies en PHP

Ejemplos de cookies

php-borrarcookie.php<? setcookie("cookiedeprueba","", time() - 3600); /* expiró hace una hora */ echo "Acabo de eliminar la cookie

cookiedeprueba";?>

Page 62: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Ejemplo interesante de cookies (restricción de acceso)

13. Cookies en PHP

php-accesocookie.php<?phpif (!isset($_COOKIE['intentos'])) $intentos = 1;else $intentos = $_COOKIE['intentos'] + 1;

setcookie('intentos',$intentos,time() + 60);if ($intentos <= 3){ echo "<tt>Eres el intento número: " . $intentos . "<br>"; echo "Por tanto, puedes pasar</tt>";}else echo "<tt>Prueba un poco mas tarde, crack</tt>";?>

Un minuto más tarde

Page 63: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Desarrollo de aplicaciones PHP

para bases de datos

Almería 2007

Contenidos

10. Paso de variables entre scripts PHP11. Formularios en PHP

12. Scripts de autenticación y sesiones13. Cookies en PHP

14. Gestión de envío de archivos en PHP

Lenguajes de Desarrollo. PHP

Page 64: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

14. Gestión de archivos en PHP

php-file.php<html><head><title>Ejemplo de envio de archivos en PHP</title></head><body><form enctype="multipart/form-data" action="php-upload.php" method="post"><input type="hidden" name="MAX_FILE_SIZE" value="100000">Enviando este archivo: <input name="archivousuario“ type="file"><br><input type="submit" value="Enviar Archivo"></form></body></html>

Page 65: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

14. Gestión de archivos en PHP

Control de upload

$_FILES [‘archivousuario’][‘name’]$_FILES [‘archivousuario’][‘type’]$_FILES [‘archivousuario’][‘size’]$_FILES [‘archivousuario’][‘tmp_name’]$_FILES [‘archivousuario’][‘error’]

bool is_uploaded_file ($_FILES [‘archivousuario’][‘tmp_name’])

Funciones de gestión de archivos

bool move_uploaded_file (nombre_archivo_servidor, destino)

Page 66: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

14. Gestión de archivos en PHP

Control de uploadphp-upload.php<html><head><title>Ejemplo de envio de archivos en PHP</title></head><body><?php if (is_uploaded_file($_FILES['archivousuario']['tmp_name'])) { echo "He recibido el archivo: " . $_FILES['archivousuario']

['name'] . "<br>"; echo "Su tamaño es de: " . $_FILES['archivousuario']['size'] .

"<br>"; echo "Su nombre temporal en el servidor es: “ . $_FILES['archivousuario']['tmp_name'] . "<br>"; $nombre_archivo = "/temp/uploads/" . $_FILES['archivousuario']

['name']; move_uploaded_file($_FILES['archivousuario']['tmp_name'],

$nombre_archivo);}

Page 67: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

14. Gestión de archivos en PHP

Control de upload

php-upload.phpelse { echo "Possible ataque de carga de archivo. Nombre Archivo: " . $_FILES['archivousuario']['name'] . "<br>"; if ($_FILES['archivousuario']['error']==UPLOAD_ERR_INI_SIZE) echo "El tamaño excede lo especificado en el archivo

php.ini"; if ($_FILES['archivousuario']['error']==

UPLOAD_ERR_FORM_SIZE) echo "El tamaño excede lo especificado para este caso"; if ($_FILES['archivousuario']['error']==UPLOAD_ERR_PARTIAL) echo "El tamaño no ha subido completamente";}?></body></html>

Page 68: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

14. Gestión de archivos en PHP

Control de upload

Page 69: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

14. Gestión de archivos en PHP

Ejercicio de envío múltiple de archivos

Page 70: Desarrollo de aplicaciones PHP para bases de datos  Almería 2007

Antonio Becerra Teró[email protected]

Departamento de Lenguajes y ComputaciónUniversidad de Almería

Desarrollo de aplicaciones PHP para bases de datos

Almería 2007

Lenguajes de Desarrollo. PHP