Вы находитесь на странице: 1из 20

Generacin de sitios Web dinmicos usando PHP

Tema 4:Sesiones
Sesiones Cookies Cookies en PHP URL Sesiones en PHP Crear e inicializar las variable de sesin Ventajas de Sesiones en PHP Funciones de manejo de sesiones

Sesiones
El protocolo de transferencia de hipertexto HTTP no almacena estados. Esto significa que cada vez que solicitamos una pgina a un servidor representa una conexin distinta. Asociar un identificador de Sesin (SID) a la conexin Mecanismos ms usados para la persistencia:: Cookies URL Sesiones en PHP

Cookies
Mediante un encabezado del protocolo HTTP el server pueda almacenar informacin en el cliente. A esta informacin que el server guarda en el cliente se la denomina Cookies. Las cookies pueden habilitarse o deshabilitarse desde el navegador por los que algunos usuarios no lo soportan. Cada vez que el navegador solicita una pagina del dominio que envi la cookie => reenva la cookie al sitio, de esta forma es posible mantener persistencia.

Servidor web

Almacena informacin Solicita una pagina Reenva la cookie

Cliente (navegador) cookie

Cookies en PHP
Para crear una cookie en PHP se utiliza la funcin setcookie cuya sintaxis es la siguiente:
int = setcookie (nombre, valor, expiracin, path, dominio);
nombre: Nombre de la cookie a setear por ejemplo sesion valor: Valor que contendra la cookie, como por ejemplo JFJK123 expiracin: Fecha de vencimineto de la cookie (fecha en la cual el browser la borra del disco del usurio). path: en general suel setearse en /. dominio: Dominio para el cual el cookie es valido ejemplo .prueba.com en cuyo caso sirve para algo.prueba.com, site1.prueba.com , site2.prueba.com y todos los de la misma forma.

La funcin devuelve verdadero si pudo setearse la cookie o falso en caso contrario (por ejemplo si el navegador no acepta cookie).

Cookies en PHP
Un ejemplo
$val = setcookie(sesion,1,time()|3600,/,.prueba.com);

Podemos recuperar el valor de una cookie se debe usar el vector de PHP $HTTP_COOKIE_VARS que es vector asociativo idexado por nombre.
$ck = HTTP_COOKIE_VARS[sesion];

URL
Usando el url se puede pasar datos de una pagina a otra usando el query string de la forma:
http://dominio/path?query_string Donde query_string es de la forma: variable1=valor1&variable2=valor2..etc De esta forma podramos hacer un manejo similar al anterior pero pasando el sesion_id usando el url en lugar de usar cookies. La desventaja de este mtodo es que todos los links deben generarse de la forma:
<a href=http://dominio/path?sesion=<?print($sesion_id);?>>

Sesiones en PHP
PHP soporta desde el lenguaje el concepto de sesiones en forma nativa . Las variables de sesin se almacenan en el servidor y tienen un tiempo limitado de existencia.
Para identificar al usuario que gener las variables de sesin, el servidor genera una clave nica que es enviada al navegador y almacenada en una cookie. Luego, cada vez que el navegador solicita otra pgina al mismo sitio, enva esta cookie (clave nica) con la cual el servidor identifica de qu navegador proviene la peticin y puede obtener de un archivo de texto las variables de sesin que se han creado.
Servidor web Enva una peticin Variable de session Cliente (navegador) cookie

Genera una clave nica

Crear e inicializar las variable de sesin


Para crear o acceder al contenido de las variables de sesin debemos llamar a la funcin session_start() Debe invocarse antes de cualquier salida de marcas HTML. pagina1.php

<?php session_start();
//Para almacenar los valores en las variables de sesin lo hacemos

$_SESSION[barney"] = "Un dinosaurio grande y violeta."; ?> <a href = "pagina2.php">Siguiente pagina</a>

Ventajas de Sesiones en PHP


Es ms segura que una cookie ya que se almacena en el servidor. No tiene que estar envindose continuamente como sucede con las cookies. Otra ventaja de emplear una variable de sesin en lugar de una cookie es que cuando el navegador del cliente est configurado para desactivar las cookies las variables de sesin, tienen forma de funcionar (enviando la clave nica como parmetro en cada hipervnculo). Como desventaja podemos decir que ocupa espacio en el servidor.

Sesiones en PHP
Unas vez registrada una variable de sesion la misma estar disponible en todas las paginas que usen session_start() durante la sesin actual.
Cualquier tipo de variables de PHP puede registrase con este mtodo, incluyendo objetos (solo los atributos del objeto, no los mtodos). pagina2.php <?php session_start(); echo "El contenido de \$barney es : $barney<br>"; ?>

Funciones de manejo de sesiones con (register_globals On)


Funcin session_start(); Significado Si es la primera solicitud inicializa una sesin y le asigna un identificador de sesin nico. Si la sesin ya est iniciada, carga todas las variables de sesin. registra una variable de sesin Eliminamos la variable global introducida y se elimina el contenido de esta variable en el fichero del servidor. Sin pasar el parmetro variable elimina todas las variables de la sesin. comprueba si una variable est registrada. Devuelve true en caso afirmativo y false en caso contrario. Elimina todos los datos asociados con una sesin, borra el archivo en el servidor pero no borra la cookie.

session_register (variable) session_unregister (variable)

session_is_registered (variable) session_destroy();

Funciones de manejo de sesiones con (register_globals Off)


Funcin session_start(); Significado Si es la primera solicitud inicializa una sesin y le asigna un identificador de sesin nico. Si la sesin ya est iniciada, carga todas las variables de sesin. Recibe como parmetro una serie de nombres de variable globales y los registra como variables de sesin en el fichero del servidor Elimina una variable de sesin Devuelve true en caso de que en la sesin se encuentre registrada una variable con dicho nombre. Elimina todos los datos asociados con una sesin, borra el archivo en el servidor pero no borra la cookie.

$_SESSION[nombre] = valor

unset($_SESSION[nombre]); if(isset($_SESSION[nombre]) ) session_destroy();

Ingreso de datos
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <meta name="GENERATOR" content="Quanta Plus" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form id="datos" action="iniciarSesion.php" method="get"> <p>Ingrese sus datos personales</p> <p><input type="text" id="nombre" name="nombre" maxlength="15" /><br /> <input type="password" id="clave" name="clave" maxlength="15" /> <input type="submit" value="Enviar" /> </p> </form> </body> </html>

Ingreso de datos - vista

Comienzo de sesin
<?php session_start(); session_register('nombre'); session_register('clave'); $_SESSION['nombre']=$_GET['nombre']; $_SESSION['clave']=$_GET['clave']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>BIenvenido</title> <meta name="GENERATOR" content="Quanta Plus" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1>Bienvenido</h1> <p>Inici sesin como <?php echo $_GET['nombre'] ?></p> <p>Para comprobar que se almacenan los datos de la sesin, pulse <a href="verDatos.php">aqu</a></p> </body> </html>

Comienzo de sesin - Vista

Variables de sesin
<?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Datos Recibidos</title> <meta name="GENERATOR" content="Quanta Plus" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1>Recibidos</h1> <p>Est en la sesin iniciada por <strong><?php echo $_SESSION['nombre'] ?></strong> con contrasea <em></em> <?php echo $_SESSION['clave'] ?></em></p> </body> </html>

Variables de Sesin - vista

Bibliografa
Sesiones en DesarrolloWeb:
http://www.desarrolloweb.com/articulos/3 21.php

Juan Valle. Qu son las sesiones?


http://www.webestilo.com/php/php12a.pht ml

Вам также может понравиться