Cum să lucrați cu datele sesiunii în CodeIgniter

Ca dezvoltator CodeIgniter, este foarte important pentru tine să înțelegi cum să lucrezi cu biblioteca de sesiuni de bază. Desigur, puteți utiliza întotdeauna implicit $ _SESSION sintaxă, dar este recomandat întotdeauna să utilizați în schimb ambalajul.

Începând cu modul de încărcare a unei biblioteci de sesiuni, vom trece la discuția despre cum să adăugăm, să preluăm, să eliminăm și să distrugem variabilele sesiunii. În ultimul segment, vom examina diferitele drivere de sesiune încorporate, la dispoziția dvs., furnizate de cadrul CodeIgniter.

Cum se încarcă o Bibliotecă de sesiuni

Dacă doriți să lucrați cu sesiuni în CodeIgniter, primul lucru de care aveți nevoie este o bibliotecă de sesiuni încorporată. Cu excepția cazului în care și până când nu dezvoltați o aplicație web care nu necesită sesiuni, nu ar trebui să vă faceți griji în legătură cu biblioteca de sesiuni. Deși nu este cazul în majoritatea cazurilor, puteți să autoloziți biblioteca de sesiuni în CodeIgniter astfel încât să permită caracteristicile de tratare a sesiunilor pentru fiecare solicitare web.

Continuați și deschideți fișierul situat la application / config / autoload.php. Găsiți următoarea secțiune.

/ * | -------------------------------------------------- ----------------- | Librări de încărcare automată -------------------------------------------------- ----------------- | Acestea sunt clasele situate în sistem / biblioteci / sau | aplicație / biblioteci / director, cu adăugarea lui | "biblioteca de baze de date", care este oarecum un caz special. | | Prototip: | $ autoload ['biblioteci'] = array ("bază de date", "e-mail", "sesiune"); | | De asemenea, puteți furniza un nume de bibliotecă alternativ pentru a fi atribuit | în controler: | $ autoload ['biblioteci'] = array ('user_agent' => 'ua'); * / $ autoload ['biblioteci'] = array ();

$ Autoload [ 'biblioteci'] array deține lista de biblioteci care trebuie să fie autoloaded. După cerința noastră, să o modificăm pentru a arăta astfel:

$ autoload ['biblioteci'] = array ('sesiune');

De asemenea, există un alt mod în care ați fi putut obține acest lucru. Puteți folosi următorul cod undeva în fișierul dvs. de controler pentru a încărca biblioteca de sesiuni.

$ This-> a sarcinii> bibliotecă ( 'sesiune');

Acest lucru este destul de mult în ceea ce privește inițierea bibliotecii de sesiuni este în cauză.

În următoarele două secțiuni, vom trece prin diferitele operațiuni pe care le puteți face cu biblioteca de sesiuni de bază. Pentru a demonstra acest lucru, vom construi un exemplu de fișier de controler care încarcă biblioteca de sesiuni și va oferi metode care vor fi discutate pe parcursul acestui articol.

Continuați și creați un fișier aplicatii / controlori / Example.php cu următorul conținut.

a sarcinii> bibliotecă ( 'sesiune'); // încărcați url helper $ this-> load-> helper ('url');  indexul funcției publice () / **** SET DATA SESIUNII **** / // setarea unui singur element în sesiunea $ this-> session-> set_userdata ('favorit_website', 'http://tutsplus.com') ; // set de elemente în sesiune $ arraydata = array ('autor_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni' "interese" => array ("tenis", "călătorie")); $ This-> Session-> set_userdata ($ arraydata); / **** OBȚINE DATELE SESIUNII **** / // obține date din sesiunea ecou "Site-ul favorit:". $ This-> Session-> userdata ( 'favourite_website'); ecou "
"echo" Nume autor: "$ this-> session-> userdata ('nume_registru'); echo"
"echo" Interes (Exemplu de array): "$ this-> session-> userdata ('interests') [0]; echo"
"; / / a primi totul stocat în sesiune echo"
„; print_r ($ this-> Session-> userdata ()); / **** REMOVE DATA SESIUNII **** / // dezactivați cheia specifică din sesiunea $ this-> session-> unset_userdata ('favorit_website'); // dezactivează mai multe elemente simultan $ keys = array ('twitter_id', 'interests'); $ This-> Session-> unset_userdata ($ chei); echo "
„; print_r ($ this-> Session-> userdata ());  funcția publică setflash () // set date flash $ this-> session-> set_flashdata ('flash_welcome', 'Hey, welcome to the site!'); // marchează datele existente ca date flash $ this-> session-> set_userdata ('flash_message', 'Sunt mesaj flash!'); $ This-> Session-> mark_as_flash ( 'flash_message'); redirecționa ( 'exemplu / getflash');  funcția publică getflash () // obține data flash ecou "mesaj de întâmpinare Flash:". $ This-> Session-> flashdata ( 'flash_welcome'); echo "
„; print_r ($ this-> Session-> flashdata ());  funcția publică tempdata () // set date temp $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // marcați datele existente ca date temporare $ this-> session-> set_userdata ('coupon_code', 'XYEceQ!'); $ this-> session-> mark_as_temp ('cupon_code', 300); // obține date temporale echo $ this-> session-> tempdata ('coupon_code');  funcția publică distruge () $ this-> session-> set_userdata ('favorit_website', 'http://tutsplus.com'); // session session $ this-> session-> sess_destroy (); 

Acesta este un fișier de bază de controler pe care ar trebui să-l cunoașteți ca dezvoltator CodeIgniter. Acum, suntem gata să trecem la următoarele secțiuni care oferă o perspectivă asupra conceptelor de gestionare a sesiunilor.

Cum se adaugă, se prelucrează și se elimină datele sesiunii

Pentru început, să luăm codul nostru __construi metodă.

funcția publică __construct () parent :: __ construct (); // încărcați Biblioteca sesiunilor $ this-> load-> library ('session'); // încărcați url helper $ this-> load-> helper ('url'); 

Doar în cazul în care nu ați autoloadat biblioteca de sesiuni, veți face acest lucru în primul rând. În afară de asta, am încărcat de asemenea URL-ul ajutător care ne permite să folosim anumite metode de utilitate pe care le vom vedea ulterior.

Apoi, apuca codul index metodă.

indexul funcției publice () / **** SET DATA SESIUNII **** / // setarea unui singur element în sesiunea $ this-> session-> set_userdata ('favorit_website', 'http://tutsplus.com'); // set de elemente în sesiune $ arraydata = array ('autor_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni' "interese" => array ("tenis", "călătorie")); $ This-> Session-> set_userdata ($ arraydata); / **** OBȚINE DATELE SESIUNII **** / // obține date din sesiunea ecou "Site-ul favorit:". $ This-> Session-> userdata ( 'favourite_website'); ecou "
"echo" Nume autor: "$ this-> session-> userdata ('nume_registru'); echo"
"echo" Interes (Exemplu de array): "$ this-> session-> userdata ('interests') [0]; echo"
"; / / a primi totul stocat în sesiune echo"
„; print_r ($ this-> Session-> userdata ()); / **** REMOVE DATA SESIUNII **** / // dezactivați cheia specifică din sesiunea $ this-> session-> unset_userdata ('favorit_website'); // dezactivează mai multe elemente simultan $ keys = array ('twitter_id', 'interests'); $ This-> Session-> unset_userdata ($ chei); echo "
„; print_r ($ this-> Session-> userdata ()); 

După ce ați încărcat deja biblioteca de sesiuni, puteți utiliza $ This-> sesiune pentru a accesa obiectul sesiunii și pentru a accesa metodele acceptate. set_userdata metoda este folosită pentru a crea o nouă variabilă de sesiune și, în general, este nevoie de două argumente-cheie și valoare.

$ this-> session-> set_userdata ('favorit_website', 'http://tutsplus.com');

De asemenea, puteți utiliza funcția set_userdata pentru a crea mai multe variabile într-un singur apel. În acest caz, trebuie doar să oferiți un argument și ar trebui să fie o matrice după cum se arată mai jos.

// set de elemente în sesiune $ arraydata = array ('autor_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni' "interese" => array ("tenis", "călătorie")); $ This-> Session-> set_userdata ($ arraydata);

Utilizatorii cu ochi ascuțiți ar fi observat că ați putea atribui, de asemenea, o matrice ca valoare a oricărei variabile de sesiune, așa cum se arată mai sus în interese exemplu.

Acum, să vedem cum să preluăm valoarea oricărei variabile de sesiune. datele utilizatorului metoda este folosită pentru a extrage valoarea oricărei variabile de sesiune și de obicei are nevoie de cheia variabilei de sesiune pe care o căutați ca primul argument.

ecou "Site-ul favorit:". $ This-> Session-> userdata ( 'favourite_website');

Dacă căutați una dintre intrările de matrice, puteți utiliza următoarele:

ecou "Interes (Exemplu de array):". $ This-> Session-> userdata ( 'interese') [0];

De cele mai multe ori, doriți să aflați câte variabile în total sunt stocate într-o sesiune activă pentru depanare, și puteți face acest lucru și.

// a lua totul stocat în sesiune simultan echo '
„; print_r ($ this-> Session-> userdata ());

Da, la fel datele utilizatorului metoda vine la salvarea noastră! Dacă nu transmiteți niciun argument către datele utilizatorului , va returna toate variabilele de sesiune.

În cele din urmă, să vedem cum puteți elimina variabilele din sesiune. Este vorba de unset_userdata metodă pe care o puteți utiliza dacă doriți să eliminați toate intrările din sesiune.

// dezactivați cheia specifică din sesiunea $ this-> session-> unset_userdata ('favorited_website');

Iată variația aceleiași metode care arată cum să eliminați mai multe intrări într-o singură etapă.

// dezactivează mai multe elemente simultan $ keys = array ('twitter_id', 'interests'); $ This-> Session-> unset_userdata ($ chei);

Și asta ar trebui să ștergeți twitter_id și interese intrări din sesiune.

Continuați și testați index pentru a vedea lucrurile în acțiune.

Bunuri folositoare: Flashdata și Tempdata

În ultima secțiune, am discutat despre elementele de bază ale manipulării sesiunii în CodeIgniter. În această secțiune vom discuta câteva alte metode de utilitate furnizate de biblioteca sesiunilor.

În dezvoltarea zilnică, adesea trebuie să afișați mesaje ca răspuns la anumite acțiuni ale utilizatorilor. De exemplu, doriți să afișați un mesaj de succes când cineva publică un comentariu pe site-ul dvs. și mesajul trebuie afișat o singură dată. set_flashdata metoda este un candidat perfect pentru acest tip de utilizare caz.

De fapt, set_flashdata este foarte asemănător cu set_userdata deoarece vă permite să salvați o valoare în sesiune. Singura excepție este faptul că valoarea sesiunii stabilită de flashdata metoda este disponibilă numai pentru următoarea solicitare. În cererile ulterioare, nu veți mai putea accesa aceste variabile în momentul în care au fost șterse.

Luați codul setflash metodă.

funcția publică setflash () // setare date flash $ this-> session-> set_flashdata ('flash_welcome', 'Hey, welcome to the site!'); // marchează datele existente ca date flash $ this-> session-> set_userdata ('flash_message', 'Sunt mesaj flash!'); $ This-> Session-> mark_as_flash ( 'flash_message'); redirecționa ( 'exemplu / getflash'); 

Puteți crea un nou flashdata variabilă în același mod în care ați fi creat o variabilă de sesiune obișnuită folosind set_userdata metodă. Pe de altă parte, puteți marca și o variabilă de sesiune existentă ca a flashdata variabil. În acest caz, trebuie să utilizați mark_as_flash , așa cum se arată în codul de mai sus.

În cele din urmă, redirecționăm utilizatorul la getflash care arată cum se utilizează variabilele flashdata care au fost setate în setflash metodă. Să aruncăm o privire rapidă la getflash metodă.

funcția publică getflash () // obține datele de ecou flash "Mesaj de primire Flash:". $ This-> Session-> flashdata ( 'flash_welcome'); echo "
„; print_r ($ this-> Session-> flashdata ()); 

După cum era de așteptat, există a flashdata care vă permite să preluați variabilele de sesiune stocate ca flashdata. Dacă apelați flashdata metoda fără argumente, va returna toate variabilele flashdata similare cu cele ale datele utilizatorului metodă.

Continuați și testați setflash metodă. Veți fi redirecționat (ă) la adresa URL getflash și veți vedea mesajul. Dacă actualizați pagina Getflash, nu veți mai vedea mesajul respectiv!

Apoi, există o altă variantă oferită de biblioteca de sesiuni din această categorie - variabilele sesiunii tempdata. Dacă doriți să creați variabile de sesiune pentru o anumită perioadă de timp, set_tempdata metoda este cea pe care o cauți.

De exemplu, dacă doriți să creați o variabilă de sesiune care ar trebui să fie ștearsă automat după o anumită perioadă de timp, puteți utiliza funcția set_tempdata pentru a crea o astfel de variabilă, după cum se arată în următoarea metodă.

funcția publică tempdata () // set date temp $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // marcați datele existente ca date temporare $ this-> session-> set_userdata ('coupon_code', 'XYEceQ!'); $ this-> session-> mark_as_temp ('cupon_code', 300); // obține date temporale echo $ this-> session-> tempdata ('coupon_code'); 

Al treilea argument în set_tempdata metoda indică numărul de secunde după care variabila va fi ștearsă din sesiune.

De asemenea, puteți marca o variabilă de sesiune existentă ca tempdata utilizând mark_as_temp cu condiția să fi creat deja o variabilă de sesiune folosind set_userdata metodă.

În cele din urmă, puteți utiliza funcția tempdata pentru a obține valoarea oricărei variabile tempdata.

Deci, este bine să aveți astfel de metode de utilitate la dispoziția dvs. în ciclul de viață de dezvoltare de zi cu zi!

Ce nu trebuie să uitați: Sesiunea distruge

Distrugerea sesiunii este probabil ultimul lucru pe care doriți să-l faceți atunci când utilizatorul se deconectează. Se asigură că variabilele de sesiune stabilite până acum sunt șterse din sesiunea activă și nu mai sunt disponibile pentru solicitările ulterioare.

Să tragem în codul lui distruge și treceți prin ea.

funcția publică distruge () $ this-> session-> set_userdata ("favorit_website", "http://tutsplus.com"); // distruge sesiunea $ this-> session-> sess_destroy (); 

Este vorba de sess_destroy metodă care ne ajută să distrugem sesiunea activă. Desigur, va șterge și variabilele tempdata și flashdata care au fost setate în sesiunea activă.

Asigurați-vă că vă obișnuiți să distrugeți o sesiune odată ce aceasta nu mai este utilă în contextul actual al utilizatorului.

Cherry pe partea de sus: Sesiunea Drivers

Suntem în ultima secțiune a acestui articol - driverele de sesiune. De cele mai multe ori, nu vă deranjează să configurați driverul de sesiune în aplicația dvs., deoarece driverul de sesiune implicit, sistemul de fișiere, este configurat deja cu setarea implicită.

Deci este sistemul de fișiere care deține toate datele legate de sesiune și este utilizat pe scară largă și este standardul acceptat pentru manipularea sesiunilor. Spunând acest lucru, CodeIgniter suportă, de asemenea, alte drivere de sesiune pe care le-ați putea folosi dacă doriți să treceți de la driverul de sesiune implicit al sistemului de fișiere.

Iată o listă a tuturor driverelor de sesiuni acceptate în CodeIgniter:

  • Fișiere
  • Bază de date
  • Redis
  • memcached

Driverul sesiunii de baze de date, așa cum sugerează și numele, stochează datele sesiunii în baza de date pe care ați configurat-o pentru aplicația CodeIgniter.

Pe de altă parte, celelalte două drivere de sesiune sunt mecanisme de stocare în memorie preferate pentru site-urile de înaltă performanță.

În application / config / config.php fișier, puteți configura driverul de sesiune pe care doriți să îl utilizați în aplicația dvs..

$ config ['sess_driver'] = 'baza de date'; $ config ['sess_save_path'] = 'sesiuni personalizate';

Acesta îi spune lui CodeIgniter să utilizeze driverul sesiunii de bază de date, iar datele din sesiune vor fi salvate în custom_sessions Tabelul MySQL.

Discuția fiecărui șofer de sesiune este dincolo de sfera de aplicare a acestui articol, dar puteți trece prin documentația oficială a site-ului care oferă un ghid aprofundat pentru fiecare conducător auto.

Concluzie

Manipularea sesiunilor în CodeIgniter a fost subiectul tutorialului de astăzi și am discutat detaliat privindu-ne la fiecare aspect al subiectului.

Începând cu operațiunile de bază ale sesiunii, am parcurs și acele metode flashdata și tempdata, și am discutat despre driverele de sesiune care au încheiat articolul nostru.

Ca întotdeauna, ați putea să vă striga întrebările și sugestiile folosind feed-ul de mai jos!

Cod