Está en la página 1de 6

Sesiones en PHP

Una sesin en el entorno del desarrollo web consiste en controlar el acceso individual a una pgina o grupo de pginas determinado, mediante la asignacin de un identificador de nico para cada usuario. Con ello se puede conseguir hacer un seguimiento de cada usuario a lo largo de su visita en nuestra pgina web, desde que entra hasta que sale. PHP consigue con el apoyo de las sesiones construir pginas ms personalizadas conservando dentro del objeto $_SESSION de PHP el estado de las acciones realizadas por el usuario (de dnde viene, por dnde ha pasado..). Por ejemplo, en una tienda virtual cuando el usuario va a pagar definitivamente el pedido, la pgina deber "recordar" qu productos ha seleccionado previamente. Para esto se utilizan las sesiones, para identificar a un usuario y pasar datos asociados a l entre las distintas pginas. En el caso de la tienda, el listado de productos se guardara en el objeto $_SESSION asociados a un identificador. Otro uso muy frecuente de las sesiones es la autentificacin en pginas restringidas mediante usuario y password. Mediante PHP hay que comprobar que los datos introducidos por el usuario en el formulario de autentificacin son vlidos en la base de datos, y si es as iniciar una sesin guardndolos en el objeto $_SESSION. En cada pgina que se quiera restringir el acceso deber haber una comprobacin de si existen las variables de sesin y si stas coinciden con algn registro de la base de datos. En caso contrario el usuario no es vlido y deber identificarse de nuevo. Es imprescindible para el uso de sesiones que el usuario acepte las cookies. De lo contrario el identificador de sesin deber pasarse como parmetro GET en las URL. Para ello se debe utilizar la constante SID o la funcin session_id(). Las sesiones se utilizan fcilmente en PHP, algunas funciones relacionadas con el uso de las sesiones son: Para iniciar la sesin (crear una nueva o continuarla), disponemos de la funcin session_start(). Esta funcin siempre devuelve TRUE. bool session_start ( void ) Para registrar variables utilizamos: session_register(), acepta como argumento una cadena que identifique el nombre de una variable, o una matriz que contenga ms identificadores de variables. bool session_register ( ) Para destruir los datos asociados a la sesin actual, hay que utilizar session_destroy(). Hay que tener en cuenta que no destruye ninguna de las variables globales asociadas

a la sesin ni la cookie. Esta funcin devuelve TRUE si se destruye la sesin correctamente y FALSE se produce algn problema al intentarlo. bool session_destroy ( void ) Para eliminar alguna variable registrada se utiliza session_unregister(). Se le pasa como parmetro el nombre de la variable. bool session_unregister()

Otras funciones relacionadas con sesiones en PHP son:


string session_id (): Lee o cambia el identificador de sesin actual. void session_unset ( ): Elimina toda las variables de la sesin. bool session_is_registered(): Comprueba si una variable est registrada en la sesin. string session_save_path(): Lee o cambia la ruta donde se guardan los datos de la sesin actual. Hay que configurar el save_path para que no de error en php.ini string session_module_name (): Lee y/o cambia el mdulo de la sesin actual bool session_set_save_handler(): Establece unas funciones para el almacenamiento de los datos de la sesin a nivel de usuario. array session_get_cookie_params(): Obtiene los parmetros de la cookie de la sesin void session_set_cookie_params(): Cambia los parmetros de la cookie de la sesin void session_write_close(): Escribe los datos de la sesin y la finaliza. bool session_regenerate_id(): Actualizar la id de sesin actual con una recin generada string session_encode(): devuelve una cadena con el contenido de la sesin actual en su interior.

Sesiones en JavaScript
El espacio de almacenamiento de las cookies en JavaScript es limitada (4 x 20 Kb por dominio), el nico formato de datos que se puede utilizar es una secuencia y la sintaxis para establecer y obtener las cookies es innecesariamente complicado. En la parte superior de la que se aaden a la cabecera de la solicitud del navegador -ya que muchos de los firewalls corporativos slo aceptan una longitud de encabezado de solicitud ms bien limitado que puede impedir que las pginas se carguen a todos. El usuario Thomas Frank ha hecho un pequeo script que te permiten usar variables de sesin de JavaScript sin utilizar cookies. Le dejara almacenar 2 MB de datos, con mucho menos problemas que una solucin basada en cookies. Integrar sessvars.js (6 Kb) en la seccin de cabecera de cada pgina web en la que desea utilizar variables de sesin, antes de las secuencias de otros que tratan de establecer / conseguirlos:

<head> <script type="text/javascript" src="sessionvars.js"></script> ... </ Head>

Integrar en su cabeza.

Cmo utilizar Usted ahora tiene acceso a un nuevo objeto llamado los sessvars. Trabaja justo como cualquier objeto normal del Javascript - usted puede agregar nuevas caractersticas a l y cambiar los valores de caractersticas ya asignadas. La nica diferencia es que los sessvars sobrevivirn entre diversas pginas en su sitio. Tan si usted escritura hace algo como: sessvars.myObj = {name: "Thomas", age: 35} En una pgina Web usted podr tener acceso al objeto sessvars.myObj en todas las otras pginas que el usuario navega durante a la misma sesin. Mtodos La nica propiedad de sessvars que no debe alterar es $, Ya que contiene una serie de mtodos tiles: sessvars. $. ClearMem () Borra la memoria de sessvars.

sessvars. $. usedMem () Devuelve la cantidad de memoria sessvars utiliza en Kb. sessvars. $. usedMemPercent () Devuelve la cantidad de memoria sessvars utiliza en% de la memoria total permitido. sessvars. $. debug () Muestra una ventana de depuracin en la parte superior de la pgina. sessvars. $. flush () Explcitamente guarda el estado actual de sessvars para que todos los datos sobrevivan cuando vaya a la pgina siguiente. Es improbable que esta sea necesaria, ya que normalmente se hace automticamente cuando la descarga desencadena el evento. Preferencias / banderas Tambin hay algunas banderas diferentes que usted puede establecer la forma en que sessvars se comporta: sessvars. $. prefs.memlimit [2000 {} default] Cuntos Kb de datos que puede almacenar en sessvars? El valor predeterminado es 2000 Kb, ya que Opera 9.25 parece tener un lmite por encima de eso. IE7.0, Firefox 1.5/2.0 y Safari 3.0 tienen lmites ms altos 10 MB no es un problema en los navegadores. sessvars. $. prefs.autoFlush [true {} default /false] Determina si sessvars debe descargar / guardar automticamente (ver mtodos). sessvars. $. prefs.crossDomain [True /false {default}]Si este indicador se establece en true el contenido de sessvars se puede leer a travs de dominios diferentes (si los dos sitios utilizan sessvars.js). sessvars. $. prefs.includeFunctions [true /false {default}]Determina si sessvars recuerda las funciones que le asigna a travs de cargar la pgina. sessvars. $. prefs.includeProtos [True /false {default}]Si este indicador se establece en true sessvars recuerda las propiedades asignadas al prototipo de datos diferentes y tipos de objetos a travs de cargar la pgina. Rara vez es necesaria.

Cmo se almacenan los datos? Los principios detrs de sessvars.js son realmente bastante simples: Hago uso el hecho de que usted puede fijar la caracterstica de window.name con Javascript - esto es una propiedad que se destina para nombrar las ventanas y marcos para que el que podra hacerles frente por su nombre en las secuencias de comandos. A fin de no interferir con este uso en los conjuntos de marcos (si alguien todava los usa) el script slo establece la propiedad top.name. La belleza de window.name es que el valor sobrevive entre la carga de la pgina (e incluso entre dominios) y que puede llevar un nombre muy largo. La desventaja es que slo puede contener un valor de cadena. Para evitar esto, se usa un JSON stringifier para serializar / de-serializar los datos del objeto, con lo que poder cargar / descomprimirlo muy bien. En la parte superior se agrega un detector de eventos a la ventana de evento unload que elimina la necesidad de un manual de guardar / accin al ras que se les realiz cada vez que cambie algo en el sessvar objeto.

Consideraciones de seguridad Hay una bandera cruzada de dominio en sessvars, pero aunque el valor predeterminado es falso, esto slo se encarga de que usted no reciba ningn otro tipo basura de los sitios window.name dentro de su sessvars por error. Los datos reales que usted fija estarn disponibles para otras escrituras en otros dominios para mirar - y tambin a cualquier persona capaz de escribir javascript: alert (window.name) en la barra de direcciones del navegador. Por lo tanto: Por favor, no almacene informacin confidencial en sessvars, Como contraseas, nmeros de tarjeta de visa, etc. Pero en algunos aspectos sessvars.js es ms seguro que las cookies: El contenido de window.name no se envan al servidor en el encabezado de solicitud el contenido de una cookie de Javascript, es ms fcil de rastrear.

REFERENCIAS

http://php.ciberaula.com/articulo/introduccion_sesiones_php/ Consultado el 5 de mayo de 2011 http://www.thomasfrank.se/sessionvars.html Consultado el 5 de mayo de 2011

También podría gustarte