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.