IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Introducció

Les sessions consisteix en una forma de de preservar certa informació a través d'accessos subsegüents. Això habilita la construcció d'aplicacions més personalitzada i incrementa l'atractiu d'un lloc web.

Sessions CodeIgniter

Session Class

Session Class permet mantenir l'estat d'un usuari i el seguiment de la seva activitat, mentre que navegar pel lloc. Session Class emmagatzema per a cada usuari una sèrie de dades dins d'una galeta (cookie). També pot emmagatzemar les dades de sessió en una taula de base de dades per a una major seguretat, cosa que permet que l'identificador de sessió en la cookie de l'usuari es compari amb l'identificador de sessió emmagatzemat.

Inicialitzar una sessió

Les sessions s'executaran normalment de forma global amb cada càrrega de pàgina, de manera que la Session Class ha de inicialitzar en els constructors dels seus controladors o ser carregada automàticament pel sistema.

Per a la major part, la Session Class s'executarà desatesa en segon pla, de manera que simplement inicialitzar la classe provocarà llegir, crear i actualitzar sessions.

Per a inicialitzar la Session Class de forma manual en el constructor utilitzarem la funció

$this->load->library('session')

Com treballen les sessions

Quan es carrega una pàgina, la Classe Sessió verificarà si existeixen dades de sessió valides en la cookie de sessió del usuari. Si no existeixen dades de sessió (o van expirar) es crearà una nova sessió i es guardarà a la cookie. Si existeix la sessió, la seva informació s'actualitzarà y la cookie també o farà. Amb cada actualització, se regenerarà el session_id.

Què són les Dades de Sessió?

Una sessió, per al que a CodeIgniter es refereix, és simplement un array que conté la següent informació:

  • El ID únic de Sessió del usuari (que és una cadena estadística aleatòria, codificada amb MD5 per a donar-li portabilitat, y regenerada -per defecte- cada cinc minuts.
  • La direcció IP del usuari.
  • Les dades del Agent d'Usuari (els primers 50 caràcters de la cadena de dades del navegador).
  • La marca de temps de la última activitat.

Les dades anteriors es guarden en una cookie com un array serialitzat com el següent:

[array]
(
'session_id' => codi aleatori,
'ip_address' => 'cadena - direcció IP de l'usuari',
'user_agent' => 'cadena - dades de l'agent d'usuari',
'last_activity' => marca de temps
)

Recuperar les Dades de Sessió

Qualsevol peça d'informació des de un array de sessió està disponible utilitzant la següent funció:

$this->session->userdata('item');

On item és l'index del array corresponen al item que volem recuperar. Per exemple, per a recuperar el ID de sessió, fariem:

$session_id = $this->session->userdata('session_id');

Afegir Dades de Sessió Personalitzats

Recuperar totes les dades de Sessió

Eliminar Dades de Sessió

Flashdata

Guardar Dades de Sessió en una Base de Dades

Destruir una Sessió

Per a borrar la sessió actual

$this->session->sess_destroy();

Esta funció hauria de ser la última a cridar-se. Si només el vol destruir alguns items, però no tots, utilitzarem unset_userdata();

Preferències de Sessions

Trobarem la informació relacionada amb les sessions dins de application/config/config.php.

Preferència Per defecte Opcions Descripció
sess_cookie_name ci_session Ninguna Nom amb que es vol guardar la sessió
sess_expiration 7200 Ninguna La quantitat de segons que vol que duri la sessió, el valor per defecte són 2 hores 7200 segons. Si no és vol que la sessió expiri és donarà valor 0
sess_expire_on_close Fals Cert o Fals (Booleà) Si és vol que la sessió expiri o no quan es tanqui el navegador
sess_encrypt_cookie Fals Cert o Fals (Booleà) Encriptar o no les dades de la cookie
sess_use_database Fals Cert o Fals (Booleà) Si guardar les dades de sessió en una base de dades, ha de estar creada la base de dades abans d'activar aquesta opció.
sess_table_name ci_sessions Qualsevol nom de vàlid de taula SQL Nom de la taula de base de dades per a la sessió.
sess_time_to_update 300 Temps en segons Esta opció quan freqüent la Session Class es regenera a si mateixa i crearà un nou ID de sessió
sess_match_ip Fals Cert o fals Si ha de coincidir la direcció IP del usuari al llegir les dades de sessió. Alguns ISP modifiquen la IP dinàmicament, per el qual per a que una sessió no expiri es recomanable posar el valor a Fals.
sess_match_useragent Verdader Cert o Fals (Booleà) Si ha de coincidir el Agent Usuari al llegir les dades de sessió.

Enllaços Externs

CodeIgniter Sessions

Vegeu També

Skeleton