Este post va a ir dedicado a las sesiones con PHP. Para empezar hay que aclarar que son las sesiones, y una sesión es un mecanismo de programación de las tecnologías de web scripting que permite conservar información sobre un usuario al pasar de una página a otra. A diferencia de una cookie, los datos asociados a una sesión se almacenan en el servidor y nunca en el cliente.
En la mayoría de las tecnologías de web scripting, las sesiones se implementan mediante una cookie que almacena un valor que identifica al usuario en el servidor web cada vez que pasa de una página web a otra. En el servidor web están almacenados todos los datos de la sesión y se accede a ellos cada vez que se pasa de página gracias al identificador almacenado en la cookie.
Funciones que guardan relación con las Sesiones:
- session_destroy(): Elimina todos los datos asociados con la sesión actual, sin modificar las variables globales asociadas a la sesión ni la cookie de sesión. Para usar variables de sesión de nuevo hay que llamar a la función session_start().
Para matar completamente la sesión, el identificador de sesión también se debe borrar (con unset). Por ejemplo en el comportamiento por defecto de utilizar una para propagar el identificador de sesión se debe matar la cookie de sesión por ejemplo con setcookie().
- session_unset(): Libera todos los recursos asociados a las variables de sesión actualmente registradas.
- session_enconde(): Codifica los datos de sesión actual en una cadena.
- session_decode(datos): Decodificalos datos de una sesión pasados como argumento en una cadena, generando las variables guardadas en dicha sesión.
- session_cache_expire([caducidad]): Devuelve el tiempo que resta en minutos para que la sesión finalice. Si pasamos un valor entero como argumento en la llamada a la función, se actualizará el tiempo de caducidad de la sesión.
- session_get_cookie_params(): Obtiene los parámetros de la cookie de sesión (duración, camino, dominio y seguridad), en caso de que éste haya sido elegido como método para gestionar las sesiones.
- session_get_cookie_params (tiempo [, camino [,dominio [, seguridad]]]): Nos permite cambiar los parámetros de la cookie de sesión actual.
- session_save_path ([string camino]): Nos permite obtener modificaciones de la ruta donde se guardan los datos de la sesión actual. Si se indica el camino donde guardar los datos de esta función se tiene que llamar antes de session_start().
Los parámetros de configuración de sesiones:
La siguiente tabla muestra un resumen de las directicas del fichero php.ini relacionadas con la gestión de sesiones:
Directiva | Valor por defecto | Descripción |
sessión.auto_start | 0 (deshabilitado) | Especifica si el módulo que gestiona las sesiones se inicia automáticamente al recibir una petición. |
session.name | PHPSESSID | Especifica el nombre de la sesión que se usa como nombre de la cookie. |
session.save_handler | files | Define el tipo de controlador se usa para almacenar y recuperar los datos asociados a la sesión. Podemos especificar user si las operaciones las implementa el usuario. Relacionando con session_set_save_handler() que establece las funciones de almacenamiento de sessiones definidas por el usuario las cuales se usan para lamacenar y recoger la información relacionada con la sesión. |
session.save_path | /tmp | Ruta donde se almacenan los datos asociados a las cookies. Relacionando con la función session_save_path(). |
session.serialize_handler | php | Indica si el móduclo puede usar coookies para guardar el identificativo de sesión en el lado del cliente. |
session.use_only_cookies | 0 | Especifica si sólo se deben utilizar cookies para guardar el identificativo de sesión en el lado del cliente. |
session.use_cookies | 1 (Habilitado) | Indica si el módulo puede usar cookies para guardar el identificativo de sesión en el lado del cliente. |
session.cookie_lifetime | 0 | Especifica la duración de la cookie en segundos que se manda al navegador. El valor 0 significa ‘hasta que se cierra el navegador’. |
session.cookie_domain | Especifica si las cookies se deben enviar sólo a través de conexiones seguras. | |
session.cookie_secure | Off0 | Especifica si las cookies se deben enviar sólo a través de conesione seguras. |
session.referer_check | Contiene la subcadena de comprobación de cada «HTTP Referer». Sirve para invalidar URL’s almacenadas externamente que contiene ids. HTTP_REFERER tiene que contener esta substring para la sesión en cuestión para ser considerada como válida. | |
session.cache_limiter | nocache | Especifica el método de control del caché a usar en las páginas de la sesión. Valores posibles: none, nocache, private, private_no_expire, publi). El limitador de caché define qué cabeceras HTTP de control de caché se envían al cliente. Estas cabeceras determinan las reglas por las que el contenido de la página se puede cachear por el cliente y los proxies intermedios. |
session.cache_limiter | 180 | Especifica el tiempo de vida en minutos de las páginas de la sesión que se encuentran en caché. |
session.use_trans_sid | 0 | Indica si la inclusión del sid transparente está activada o no. Es decir, automatiza la incorporación del identificador de sesión en todas las peticiones. Activar esta directiva puede ser peligroso puesto que alguien con una sesión activada puede enviar a otra persona una URL que contenga un identificador de sesión activo. |
session.gc_probability | 1 | Especifica la probabilidad de que se inicie la rutina gc (garbage collection -recolección de basura-) en cada petición en porcentaje. |
session.gc_maxlifetime | 1440 | Especifica el número de segundos tras los cuales los datos se considerarán como «basura» y serán eliminados. |
session.entropy_file | Indica la ruta a un recurso externo (un archivo) que se usará como fuente adicional de entropía en el proceso de creación de identificativos de sesión, por ejemplo, /dev/random o /dev/urandom, disponibles en muchos sistemas UNIX | |
session.entropy_length | 0 | Especifica el número de bytes que serán leídos del archivo indicado en la directiva anterior. El valor por defecto (0) hará a PHP usar la API Windows Random como fuente de entropía |