Slik jobber du med øktdata i CodeIgniter

Som en CodeIgniter-utvikler er det veldig viktig for deg å forstå hvordan du arbeider med kjernebiblioteket. Selvfølgelig kan du alltid bruke standardinnstillingen $ _SESSION syntaks, men det anbefales alltid å bruke wrappen i stedet.

Fra og med hvordan du laster inn et øktbibliotek, går vi videre til diskusjonen om hvordan du legger til, henter, fjerner og ødelegger øktvariabler. I det siste segmentet vil vi se på de forskjellige innebygde øktdriverne til din disposisjon som tilbys av CodeIgniter-rammen selv.

Slik legger du inn et øktbibliotek

Hvis du vil jobbe med økter i CodeIgniter, er det første du trenger et innebygd øktbibliotek. Med mindre og til du utvikler et webprogram som ikke krever økter i det hele tatt, bør du ikke bry deg om øktbiblioteket. Mens det ikke er tilfelle det meste av tiden, kan du autoload øktbiblioteket i CodeIgniter slik at det muliggjør økt håndteringsfunksjoner for hver webforespørsel.

Gå videre og åpne filen som ligger på application / konfig / autoload.php. Finn følgende avsnitt.

/ * | -------------------------------------------------- ----------------- | Auto-load biblioteker | -------------------------------------------------- ----------------- | Dette er klassene som ligger i system / biblioteker / eller din | søknad / biblioteker / katalog, med tillegg av | databasebiblioteket, noe som er noe av et spesielt tilfelle. | | Prototype: | | $ autoload ['libraries'] = array ('database', 'email', 'session'); | | Du kan også levere et alternativt biblioteksnavn som skal tilordnes | i kontrolleren: | | $ autoload ['libraries'] = array ('user_agent' => 'ua'); * / $ autoload ['libraries'] = array ();

De $ Autostart [ 'bibliotek'] array holder listen over biblioteker som må autoloaded. I henhold til vårt krav, la oss endre det slik at det ser ut som dette:

$ autoload ['libraries'] = array ('økt');

Også, det er en annen måte du kunne ha oppnådd det. Du kan bruke følgende kode et sted i kontrollerfilen din for å laste inn øktbiblioteket.

$ Dette-> last> bibliotek ( 'session');

Det er ganske mye det så langt som initialisering av øktbiblioteket er bekymret.

I de neste avsnittene vil vi gå gjennom de forskjellige operasjonene du kan gjøre med kjerneøktbiblioteket. For å demonstrere det, vil vi bygge en eksempelkontroll-fil som laster inn sesjonsbiblioteket og gir metoder som vil bli diskutert gjennom denne artikkelen.

Gå videre og lag en fil application / kontrollere / Example.php med følgende innhold.

last> bibliotek ( 'økt'); // last url hjelper $ this-> load-> hjelper ('url');  offentlige funksjonsindeks () / **** SET SESSION DATA **** / // sett enkelt element i økt $ this-> session-> set_userdata ('favorittwebområde', 'http://tutsplus.com') ; // sett utvalg av elementer i økt $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', 'interests' => array ('tennis', 'reiser')); $ Dette-> økt-> set_userdata ($ arraydata); / **** GET SESSION DATA **** / // få data fra økt ekko "Favoritt Nettsted:". $ Dette-> økt-> brukerdata ( 'favourite_website'); ekko "
"; echo" Forfatternavn: ". $ this-> session-> userdata ('author_name'); ekko"
"ekko" Interesse (Array Eksempel): ". $ this-> session-> userdata ('interesser') [0]; ekko"
"; / / få e'thing lagret i økten på en gang ekko"
'; print_r ($ dette-> økt-> brukerdata ()); / **** FJERNE SESSION DATA **** / // unset spesifikke nøkkel fra økt $ this-> session-> unset_userdata ('favoritt_website'); // unset flere elementer på en gang $ keys = array ('twitter_id', 'interests'); $ Dette-> økt-> unset_userdata ($ nøkler); ekko '
'; print_r ($ dette-> økt-> brukerdata ());  offentlig funksjon setflash () // sett flash data $ this-> session-> set_flashdata ('flash_welcome', 'Hei, velkommen til nettstedet!'); // mark eksisterende data som flash data $ this-> session-> set_userdata ('flash_message', 'Jeg er flashmelding!'); $ Dette-> økt-> mark_as_flash ( 'flash_message'); omdirigere ( 'eksempel / getflash');  offentlig funksjon getflash () // få flash data echo "Flash velkomstmelding:". $ Dette-> økt-> flashdata ( 'flash_welcome'); ekko '
'; print_r ($ dette-> økt-> flashdata ());  offentlig funksjon tempdata () // angi temp data $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // mark eksisterende data som temp data $ this-> session-> set_userdata ('coupon_code', 'XYEceQ!'); $ this-> session-> mark_as_temp ('coupon_code', 300); // få temp data echo $ this-> session-> tempdata ('coupon_code');  offentlig funksjon ødelegge () $ this-> session-> set_userdata ('favorittwebområde', 'http://tutsplus.com'); // destory session $ this-> session-> sess_destroy (); 

Det er en veldig grunnleggende kontrollerfil du burde være kjent med som en CodeIgniter-utvikler. Nå er vi klare til å flytte til de neste par seksjonene som gir innsikt i økthåndteringskonseptene.

Slik legger du til, henter og fjerner øktdata

Til å begynne med, la oss hente koden til vår __construct metode.

offentlig funksjon __construct () foreldre :: __ construct (); // load session bibliotek $ this-> load-> library ('session'); // last url hjelper $ this-> load-> hjelper ('url'); 

Bare hvis du ikke har autoloaded økt biblioteket, vil det gjøre det i utgangspunktet. Bortsett fra det, har vi også lastet inn url hjelper som lar oss bruke visse bruksmetoder som vi ser senere.

Deretter ta tak i koden til index metode.

offentlig funksjonsindeks () / **** SET SESSION DATA **** / // sett enkelt element i økt $ this-> session-> set_userdata ('favoritt_website', 'http://tutsplus.com'); // sett utvalg av elementer i økt $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', 'interests' => array ('tennis', 'reiser')); $ Dette-> økt-> set_userdata ($ arraydata); / **** GET SESSION DATA **** / // få data fra økt ekko "Favoritt Nettsted:". $ Dette-> økt-> brukerdata ( 'favourite_website'); ekko "
"; echo" Forfatternavn: ". $ this-> session-> userdata ('author_name'); ekko"
"ekko" Interesse (Array Eksempel): ". $ this-> session-> userdata ('interesser') [0]; ekko"
"; / / få e'thing lagret i økten på en gang ekko"
'; print_r ($ dette-> økt-> brukerdata ()); / **** FJERNE SESSION DATA **** / // unset spesifikke nøkkel fra økt $ this-> session-> unset_userdata ('favoritt_website'); // unset flere elementer på en gang $ keys = array ('twitter_id', 'interests'); $ Dette-> økt-> unset_userdata ($ nøkler); ekko '
'; print_r ($ dette-> økt-> brukerdata ()); 

Som du har lastet inn sesjonsbiblioteket allerede, kan du bruke $ Dette-> sesjon for å få tilgang til sesjonsobjektet og få tilgang til metodene som støttes. De set_userdata Metoden brukes til å opprette en ny øktvariabel, og generelt tar det to argumenter og nøkkelverdier.

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

Du kan også bruke set_userdata Metode for å opprette flere variabler i en enkelt samtale. I så fall må du bare gi ett argument, og det skal være en matrise som vist nedenfor.

// sett utvalg av elementer i økt $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', 'interests' => array ('tennis', 'reiser')); $ Dette-> økt-> set_userdata ($ arraydata);

Brukere med skarpe øyne ville ha lagt merke til at du også kan tilordne en matrise som en verdi av en økt variabel, som vist ovenfor i interesser eksempel.

Nå, la oss se hvordan du henter verdien av en hvilken som helst sesjonsvariabel. De brukerdata Metoden brukes til å hente verdien av en hvilken som helst øktvariabel, og vanligvis trenger den nøkkelen til øktvariabelen du leter etter som det første argumentet.

ekko "Favoritt Nettsted:". $ Dette-> økt-> brukerdata ( 'favourite_website');

Hvis du leter etter en av tabelloppføringene, kan du bruke følgende:

ekko "Interesse (Array Eksempel):". $ Dette-> økt-> brukerdata (interesser ') [0];

Oftere enn ikke, vil du vite hvor mange variabler totalt lagres i en aktiv økt for feilsøking, og det kan du også gjøre.

// få e'thing lagret i økten på en gang ekko '
'; print_r ($ dette-> økt-> brukerdata ());

Ja, det samme brukerdata Metoden kommer til vår redning! Hvis du ikke sender noe argument til brukerdata metode, vil det returnere alle øktvariablene.

Til slutt, la oss se hvordan du kan fjerne variabler fra økten. Det er unset_userdata Metode som du kan bruke bør du fjerne eventuelle øktoppføringer.

// unset spesifikke nøkkel fra økt $ this-> session-> unset_userdata ('favorittside');

Og her er variasjonen av samme metode som viser hvordan du fjerner flere oppføringer i en enkelt gang.

// unset flere elementer på en gang $ keys = array ('twitter_id', 'interests'); $ Dette-> økt-> unset_userdata ($ nøkler);

Og det bør slette twitter_id og interesser oppføringer fra økten.

Gå videre og test index metode for å se ting i aksjon.

Nyttige godbiter: Flashdata og Tempdata

I det siste avsnittet diskuterte vi grunnleggende om øktbehandling i CodeIgniter. I denne delen diskuterer vi noen andre bruksmetoder som tilbys av øktbiblioteket.

I din daglige utvikling må du ofte vise meldinger som svar på visse brukerhandlinger. Som et eksempel, vil du vise en suksessmelding når noen legger inn en kommentar på nettstedet ditt, og meldingen skal bare vises én gang. De set_flashdata Metoden er en perfekt kandidat for denne typen brukstilfelle.

Faktisk, set_flashdata er veldig lik den set_userdata metode ved at den lar deg lagre en verdi i økten. Det eneste unntaket er at øktverdien satt av flashdata Metoden er bare tilgjengelig for neste forespørsel. I etterfølgende forespørsler vil du ikke få tilgang til disse variablene lenger da de ble ryddet.

Ta tak i koden til setflash metode.

offentlig funksjon setflash () // sett flash data $ this-> session-> set_flashdata ('flash_welcome', 'Hei, velkommen til nettstedet!'); // mark eksisterende data som flash data $ this-> session-> set_userdata ('flash_message', 'Jeg er flashmelding!'); $ Dette-> økt-> mark_as_flash ( 'flash_message'); omdirigere ( 'eksempel / getflash'); 

Du kan opprette en ny flashdata variabel på samme måte som du ville ha opprettet en vanlig øktvariabel ved hjelp av set_userdata metode. På den annen side kan du også merke en eksisterende øktvariabel som en flashdata variabel. I så fall må du bruke mark_as_flash metode, som vist i koden ovenfor.

Endelig omdirigerer vi brukeren til getflash metode som viser hvordan du bruker flashdata-variabler som ble angitt i setflash metode. La oss få en rask titt på getflash metode.

offentlig funksjon getflash () // få flash data echo "Flash velkomstmelding:". $ Dette-> økt-> flashdata ( 'flash_welcome'); ekko '
'; print_r ($ dette-> økt-> flashdata ()); 

Som forventet er det en flashdata Metode som lar deg hente øktvariabler lagret som flashdata. Hvis du ringer til flashdata metode uten argumenter, vil det returnere alle flashdata variabler som ligner på brukerdata metode.

Gå videre og test setflash metode. Du blir omdirigert til getflash-nettadressen, og du vil se meldingen. Hvis du oppdaterer getflash-siden, ser du ikke meldingen igjen!

Deretter er det en annen variasjon som tilbys av øktbiblioteket i denne kategorien - tempdata-øktvariablene. Hvis du vil opprette øktvariabler for en bestemt tidsperiode, vil set_tempdata Metoden er den du leter etter.

Hvis du for eksempel vil opprette en øktvariabel som automatisk skal slettes etter en bestemt tidsperiode, kan du bruke set_tempdata metode for å opprette en slik variabel, som vist i den følgende metoden.

offentlig funksjon tempdata () // angi temp data $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // mark eksisterende data som temp data $ this-> session-> set_userdata ('coupon_code', 'XYEceQ!'); $ this-> session-> mark_as_temp ('coupon_code', 300); // få temp data echo $ this-> session-> tempdata ('coupon_code'); 

Det tredje argumentet i set_tempdata Metode angir antall sekunder etter hvilke variabelen vil bli slettet fra økten.

Du kan også merke en eksisterende sesjonsvariabel som tempdata ved hjelp av mark_as_temp Metode forutsatt at du allerede har opprettet en øktvariabel ved hjelp av set_userdata metode.

Til slutt kan du bruke tempdata metode for å hente verdien av enhver tempdata-variabel.

Så det er fint å ha slike bruksmetoder til din disposisjon i din daglige utviklingslivssyklus!

Hva du ikke bør glemme: Session ødelegge

Å ødelegge økten er trolig den siste tingen du vil gjøre når brukeren logger ut. Det sørger for at øktvariablene som er angitt hittil, slettes fra den aktive økten, og er ikke lenger tilgjengelige for etterfølgende forespørsler.

La oss trekke inn koden til ødelegge metode og gå gjennom den.

offentlig funksjon ødelegge () $ this-> session-> set_userdata ('favorittwebområde', 'http://tutsplus.com'); // ødelegge økt $ this-> session-> sess_destroy (); 

Det er sess_destroy metode som hjelper oss med å ødelegge den aktive økten. Selvfølgelig vil det også slette tempdata og flashdata-variabler som ble angitt i den aktive økten.

Sørg for at du blir vant til å ødelegge en økt når den ikke lenger er nyttig i den nåværende brukerkonteksten.

Kirsebær på toppen: Session-drivere

Vi går inn i den siste delen av denne artikkelen-sesjonsdriverne. Oftere enn ikke, gjør du ikke bry deg om å konfigurere sesjonsdriveren i applikasjonen din som standard sesjonsdriver, filsystemet, er allerede konfigurert med standardoppsettet.

Så det er filsystemet som inneholder alle øktrelaterte data, og det er mye brukt og er den aksepterte standarden for økthåndtering. Når det er sagt, støtter CodeIgniter også andre øktdrivere som du kan bruke hvis du ønsker å bytte fra standard filsystem sessionsdriver.

Her er en liste over alle støttede økt drivere i CodeIgniter:

  • filer
  • database
  • Redis
  • memcached

Databasesøksdriveren, som navnet antyder, lagrer øktdataene i databasen du har konfigurert for CodeIgniter-programmet.

På den annen side er de andre to øktdriverne lagringsmekanismer for lagring foretrukket for høyytelsesnettsteder.

I application / konfig / config.php fil, kan du konfigurere sesjonsdriveren du vil bruke i søknaden din.

$ config ['sess_driver'] = 'database'; $ config ['sess_save_path'] = 'custom_sessions';

Det forteller CodeIgniter å bruke databasesøksdriveren, og øktdataene blir lagret i custom_sessions MySQL-tabellen.

Diskusjonen av hver sesjonsdriver er utenfor rammen av denne artikkelen, men du kan gå gjennom den offisielle nettstedet dokumentasjonen som gir en grundig veiledning for hver sjåfør.

Konklusjon

Sessionhåndtering i CodeIgniter var temaet for dagens veiledning, og vi diskuterte det grundig ved å se på alle aspekter av emnet.

Fra og med grunnleggende øktoperasjoner gikk vi også gjennom de kule flashdata- og tempdata-metodene, og det var diskusjonen om øktdrivere som konkluderte med vår artikkel.

Som alltid kan du rope ut dine spørsmål og forslag ved å bruke feedet under!