14-Sesiones
Generalmente
una web se compone de una serie de paginas entre las que existe
alguna relacion. Un ejemplo claro es una pagina en la cual
es necesario estar registrado para poder acceder a ellas ya
que en funcion de la categoria del usuario nos permitira acceder
a unas secciones o otras, en estas aplicaciones sera necesario
ir comprobando los permisos de usuario y para ello usamos
un elemento en PHP denominado "sesiones".
Una
sesion se inicia cuando un usuario entra en la aplicacion
web y finaliza cuando el usuario abandona la aplicacion(mas
adelante comprenderemos lo de "abandonar aplicacion"),
durante todo ese tiempo podemos manipular una serie de variables
que se inician al iniciar la sesion y mantener un tipo de
informacion comun entre todas las paginas(en el caso de el
usuario registrado seria los privilegios que posee).Para mantener
esta informacion 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 solucion muy basica que consiste en un
identificador de sesion diferente en cada caso.
Este
identificador de sesion debe ser enviado de una pagina a otra
para mantener la sesion activa(a menos que en la configuracion
del servidor tengamos activada la opcion session_trans_id)
y tambien es necesario pasar el identificador de sesion en
los formularios como un campo HIDDEN.
Ejemplos:
-Hipervinculo
<a href="pagina.php?<? =SID ?>">Entrar</a>
-Formulario
<input type="hidden" name="session_name()"
value="SID">
Funciones
de gestion de sesiones
Funcion
Significado
session_start(); Si es la primera solicitud genera un identificador
de sesion aleatorio cuyo nombre sera sess_IDSESION; si es
otra solicitud continua la sesion iniciada anteriormente.
session_destroy(); Elimina todos los datos asociados con una
sesion, borra el archivo en el servidor pero no borra la cookie.
session_register(nombre); Recibe como parametro una serie
de nombres de variable globales y los registra como variables
de sesion 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 parametro nombre eliminaremos
todas las variables de la sesion.
session_is_registered(nombre); Devuelve true en caso de que
en la sesion se encuentre registrada una variable con dicho
nombre.
session_unset(); Dejamos sin ningun valor asignado a todas
las variables de la sesion
session_id([nombre]); Si no le proporcionamos ningun parametro
nos da el identificador de sesion; si le proporcionamos el
parametro nombre cambia el valor del identificador por el
parametro nombre.
session_name([nombre]); Si se invova sin parametro devuelve
el nombre de la variable interna que tiene el id de sesiones;
si se pasa parametro cambia el nombre de la sesion.
session_get_cookie_params(); Permite definir nuevos valores
para los parametros de configuracion 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 cache que tiene por defecto.
session_encode(); Devuelve una cadena con la informacion de
una sesion, despues de usar esta funcion la informacion de
la sesion queda actualizada
session_decode(cadena); Descodifica la cadena que recibe como
parametro y que contiene la info de sesion, despues de usar
esta funcion se actualiza la info de sesion.
session_save_path([path]); Devuelve el camino al directorio
donde se guardan los ficheros asociados a la sesion.El efecto
solo dura en el script actual.
session_module_name([modulo]); Devuelve el nombre del modulo
que se usa para realizar la gestion de sesiones.Cuando se
invoca un parametro 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 informacion
asociada con una sesion.De esta forma los datos pueden ser
metidos en una BD en vez de en un fichero.Tenemos que pasarle
como parametro toda la informacion necesaria para crear y
destruir sesiones.
|