Generalmente una web se compone de una serie de páginas entre las que existe alguna relación. Un ejemplo claro es una página en la cual es necesario estar registrado para poder acceder a ellas ya que en función de la categoría del usuario nos permitirá acceder a unas secciones o otras. En estas aplicaciones será necesario ir comprobando los permisos de usuario y para ello usamos un elemento en PHP denominado “sesiones“.
Una sesión se inicia cuando un usuario entra en la aplicación web y finaliza cuando el usuario abandona la aplicación (mas adelante comprenderemos lo de “abandonar aplicación”).
Durante todo ese tiempo podemos manipular una serie de variables que se inician al iniciar la sesión y mantener un tipo de información común entre todas las páginas (en el caso de el usuario registrado seria los privilegios que posee).
Para mantener esta información constante es necesario que los datos se guarden en un fichero ya sea en el cliente (cookies) o en el servidor (en caso de que tenga desactivado las cookies).
Para el problema que consiste en diferenciar los diferentes usuarios existe una solución muy básica que consiste en un identificador de sesión diferente en cada caso.
Este identificador de sesión debe ser enviado de una pagina a otra para mantener la sesión activa(a menos que en la configuración del servidor tengamos activada la opción session_trans_id) y también es necesario pasar el identificador de sesión en los formularios como un campo HIDDEN.
Ejemplos:
– Hipervínculo
<a href=”pagina.php?<? =SID ?>”>Entrar</a>
-Formulario
<input type=”hidden” name=”session_name()” value=”SID”>
Funciones de gestión de sesiones
función | Significado |
session_start(); | Si es la primera solicitud genera un identificador de sesión aleatorio cuyo nombre será sess_IDsesión; si es otra solicitud continua la sesión iniciada anteriormente. |
session_destroy(); | Elimina todos los datos asociados con una sesión, borra el archivo en el servidor pero no borra la cookie. |
session_register(nombre); | Recibe como parámetro una serie de nombres de variable globales y los registra como variables de sesión en el fichero del servidor |
session_unregister(nombre); | Eliminamos la variable global introducida y se elimina el contenido de esta variable en el fichero del servidor.Sin pasar el parámetro nombre eliminaremos todas las variables de la sesión. |
session_is_registered(nombre); | Devuelve true en caso de que en la sesión se encuentre registrada una variable con dicho nombre. |
session_unset(); | Dejamos sin ningún valor asignado a todas las variables de la sesión |
session_id([nombre]); | Si no le proporcionamos ningún parámetro nos da el identificador de sesión; si le proporcionamos el parámetro nombre cambia el valor del identificador por el parámetro nombre. |
session_name([nombre]); | Si se invoca sin parámetro devuelve el nombre de la variable interna que tiene el id de sesiones; si se pasa parámetro cambia el nombre de la sesión. |
session_get_cookie_params(); | Permite definir nuevos valores para los parámetros de configuración de las cookies.Para que el cambio sea permanente hay que invocar el cambio en todos los documentos. |
session_cache_limiter([cache_limiter]); | Si se le proporciona valor modifica el valor por defecto en cambio sino se muestra el caché que tiene por defecto. |
session_encode(); | Devuelve una cadena con la información de una sesión, después de usar esta función la información de la sesión queda actualizada |
session_decode(cadena); | Descodifica la cadena que recibe como parámetro y que contiene la info de sesión, después de usar esta función se actualiza la info de sesión. |
session_save_path([path]); | Devuelve el camino al directorio donde se guardan los ficheros asociados a la sesión.El efecto solo dura en el script actual. |
session_module_name([modulo]); | Devuelve el nombre del modulo que se usa para realizar la gestión de sesiones. Cuando se invoca un parámetro se usa como nuevo gestor de sesiones. |
session_set_save_handler(open,close,read,write,destroy,gc); | |
Permite definir su propio manejador para almacenar la información asociada con una sesión.De esta forma los datos pueden ser metidos en una BD en vez de en un fichero. Tenemos que pasarle como parámetro toda la información necesaria para crear y destruir sesiones. |
Publicar un comentario