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.
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. Deset_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 tilbrukerdata
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
oginteresser
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 denset_userdata
metode ved at den lar deg lagre en verdi i økten. Det eneste unntaket er at øktverdien satt avflashdata
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 avset_userdata
metode. På den annen side kan du også merke en eksisterende øktvariabel som enflashdata
variabel. I så fall må du brukemark_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 isetflash
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 tilflashdata
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 avset_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:
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.
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!