Tutorial de Sesiones en Php

Your ads will be inserted here by
Easy Plugin for AdSense.
Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.
Este es un tutorial para el manejo y control de sesiones en PHP, una de las consultas más habituales realizadas sobre este lenguaje.
Si existe una consulta repetida en las listas de PHP, es la relativa al uso de las sesiones. El uso de sesiones es un método ampliamente extendido en cualquier aplicación de cierta entidad. Básicamente una sesión es la secuencia de páginas que un usuario visita en un sitio web. Desde que entra en nuestro sitio, hasta que lo abandona. El término sesión en PHP, session en inglés, se aplica a esta secuencia de navegación, para ello crearemos un identificador único que asignamos a cada una de estas sessiones de navegación. A este identificador de sesión se le denomina, comunmente, como la sesión. El proceso en cualquier lenguaje de programación podría ser algo así: Y para que no perdamos el hilo de la navegación del usuario deberemos asociar esta sesión a todas las URLs y acciones de formulario. Podemos tambien crear un cookie que incluya el identificador de sesión, pero es conveniente recordar que la disponibilidad o no de las cookies depende del usuario, y no es conveniente fiarse de lo que un usuario pueda o no tener habilitado. Lo contado hasta ahora es teoría pura y es aplicable a cualquier lenguaje de programación C, Perl, etc. Los que programamos en PHP4 tenemos la suerte de que toda la gestión de sesiones la hace el mismo PHP. Por lo tanto lo comentado a partir de aquí es solo aplicable a PHP4. Si aún desarrrollas PHP3, tendras que crear tus propias librerías de gestión de sesiones o recurrir a alguna de las existentes, como la de <http://phplib.netuse.de/>PHPLIB. Para utilizar sessiones en PHP lo primero es inicializarlas. Podemos hacerlo explícitamente, mediante la función session_start(), o al registrar una variable en una sesión mediante session_register(‘miVariable’). En ambos casos se crea una nueva sesión, si no existe, o se retoma la sesión actual. Veamos un sencillo ejemplo: session_start(); Esta es la forma más básica, si el usuario tiene los cookies activados, PHP habrá insertado de forma automática la sesión y ésta será pasada de una página a otra sin hacer nada más. Desde un punto de vista práctico la sesión es operativa, pero no vemos nada. Podemos obtener la sesión en cualquier momento mediante la función session_id(). Inserta en las sucesivas páginas la siguiente línea para ver si la sesión está disponible: session_start(); En este caso session_start() comprueba en los cookies que existe una sesión y continua con ella, session_id() devuelve el identificador actual. Veamos otro ejemplo que, tal vez, te lo aclare un poco más: session_register(‘contador’); Como dije anteriormente la sesión se crea o recoge mediante session_start(), o tambien cuando se registra una variable de sesión mediante session_register(). Si no has utilizado nunca las sesiones, el concepto de variable de sesión, puede resultar un poco abstracto. Básicamente es una variable, como cualquiera de las que gestiona PHP4, pero que reside en un espacio específico en el servidor, junto con el identificador de sesión, y que pertenece únicamente a un usuario. En nuestro ejemplo anterior, registramos la variable $contador en la primera línea del script. En la segunda línea, entre otras cosas, cada vez que recargemos la página o hagamos click sobre el enlace, el valor de $contador se incrementará en 1. En esta línea hacemos uso de la variable reservada $PHP_SELF, que hace referencia al propio script en ejecución y una constante propia de PHP4, SID, que contiene el nombre de la sesión y el identificador de la misma. Si situas el ratón sobre el enlace verás algo parecido a esto en la barra de status del navegador, en la parte inferior: http://www.intranet.xxx/session.php? Desactiva los cookies en tu buscador y haz la prueba de nuevo, el enlace debería ser algo así: http://www.intranet.xxx/session.php?PHPSESSID=86c7a1fefddb6a127005131fc6d3b Your ads will be inserted here by Easy Plugin for AdSense. Please go to the plugin admin page to A continuación de la interrogación encontramos la variable $PHPSESSID, que es el nombre por defecto que asigna PHP4 al identificador de sesión y el propio identificador. Por lo tanto $PHPSESSID, contiene el identificador de sesión. Ya está a tu disposición para cualquier tarea que tengas que realizar. Podemos averiguar tambien el nombre de la sesión, o modificarlo, mediante la función session_name(). Veamos una prueba práctica: session_name(‘misesion’); La asignación del nombre de sesión debe realizarse antes que ninguna otra función con sesiones, antes que session_start() o session_register(). Uno de los errores más comunes cuando se utilizan sesiones es dejar líneas en blanco antes de la inicialización de PHP o enviar alguna salida a la pantalla. Para probarlo crea una línea en blanco o con cualquier cosa antes de Si tienes los cookies activados, te encontrarás un error de este tipo: Warning: Cannot send session cookie – PHP está informando de que no puede activar los cookies en el navegador del usuario, porque las cabeceras ya han sido enviadas. Simplemente por la existencia de una línea en blanco. Como medida práctica, no dejes espacios ni antes del inicio del script, ni después de la finalización. Te ahorrará muchos disgustos. Si después de todo lo comentado aún no entiendes para que sirven las sesiones, veamos un ejemplo práctico. Imagina que quisieras crear un sistema de cesta de la compra, en su forma básica podría ser algo así: session_start(); Una breve explicación. En la línea 4 comprobamos si el usuario ha pasado algún artículo, desde el formulario. En la 5 si el array itemsEnCesta no existe, lo creamos con el nuevo producto y la cantidad indicada. Si el array existe recorremos su contenido, entre las líneas 8 y 13, y si encontramos un artículo igual, añadimos la cantidad en la línea 10. Si no lo encontramos, es un nuevo artículo, por lo tanto, añadimos el nuevo producto con la correspondiente cantidad a itemsEnCesta en la línea 14. Y a continuación imprimos el formulario y los resultados, si los hubiera, a partir de la línea 18, donde empieza el HTML. ¿Te imaginas las posibilidades de un sistema de almacenamiento de información de estas características?. No necesitas ficheros, ni bases de datos, ni tienes que andar pasando valores de una página a otra. PHP va gestionando estos datos por nosotros, hasta el momento en que decidamos almacenar la información donde más nos interese |