Som en CodeIgniter-utvecklare är det verkligen viktigt för dig att förstå hur man arbetar med kärnbiblioteket. Naturligtvis kan du alltid använda standardvärdet $ _SESSION
syntax, men det rekommenderas alltid att använda omslaget istället.
Från och med hur man laddar ett sessionsbibliotek flyttar vi till diskussionen om hur man lägger till, hämtar, tar bort och förstör sessionvariabler. I det sista segmentet kommer vi att titta på de olika inbyggda sessionsdrivrutinerna till ditt förfogande som tillhandahålls av CodeIgniter-ramen själv.
Om du vill arbeta med sessioner i CodeIgniter är det första du behöver ett inbyggt sessionsbibliotek. Om inte och tills du utvecklar en webbapplikation som inte kräver sessioner alls, borde du inte bry sig om sessionsbiblioteket. Medan det inte är fallet för det mesta kan du autoload sessionbiblioteket i CodeIgniter så att det möjliggör sessionshanteringsfunktioner för varje webbförfrågan.
Gå vidare och öppna filen som finns på application / config / autoload.php
. Hitta följande avsnitt.
/ * | -------------------------------------------------- ----------------- | Automatiska laddningsbibliotek | -------------------------------------------------- ----------------- | Det här är klasserna i system / bibliotek / eller din | applikation / bibliotek / katalog, med tillägg av | databasbiblioteket, vilket är något av ett speciellt fall. | | Prototyp: | | $ autoload ['libraries'] = array ('databas', 'email', 'session'); | | Du kan också tillhandahålla ett alternativt biblioteksnamn som ska tilldelas | i regulatorn: | | $ autoload ['libraries'] = array ('user_agent' => 'ua'); * / $ autoload ['libraries'] = array ();
De $ Autoload [ 'bibliotek']
array innehåller listan över bibliotek som behöver autoloaded. Enligt vårt krav, låt oss ändra det för att se så ut:
$ autoload ['libraries'] = array ('session');
Det finns också ett annat sätt som du kan ha uppnått. Du kan använda följande kod någonstans i din kontrollerfil för att ladda upp sessionsbiblioteket.
$ This-> last> bibliotek (session ');
Det är ganska mycket så mycket som initialiseringen av sessionsbiblioteket berörs.
I nästa avsnitt kommer vi att gå igenom de olika operationerna som du kan göra med kärnbiblioteket. För att visa det kommer vi att bygga en exempelförvaltningsfil som laddar upp sessionsbiblioteket och ger metoder som kommer att diskuteras i hela denna artikel.
Gå vidare och skapa en fil application / controllers / Example.php
med följande innehåll.
last> bibliotek ( 'session'); // ladda urlhjälpar $ this-> load-> hjälper ('url'); offentliga funktionsindex () / **** SET SESSION DATA **** / // ställa in enstaka objekt i session $ this-> session-> set_userdata ('favorite_website', 'http://tutsplus.com') ; // set array of items in session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni' 'interests' => array ('tennis', 'resa')); $ This-> Session> set_userdata ($ arraydata); / **** FÅ SESSION DATA **** / // Hämta data från sessionen echo "Favoritwebbplats:". $ This-> Session> Userdata (favourite_website '); eko "
"; echo" Författarnamn: ". $ this-> session-> userdata ('author_name'); echo"
"echo" Intressen (Array-exempel): ". $ this-> session-> userdata ('intressen') [0]; echo"
"; // få e'thing lagras i session samtidigt echo"'; print_r ($ this-> Session> Userdata ()); / **** FEL AV SESSION DATA **** / // unset specifik nyckel från session $ this-> session-> unset_userdata ('favorite_website'); // avmarkera flera objekt på en gång $ keys = array ('twitter_id', 'interests'); $ This-> Session> unset_userdata (nycklar $); eko "'; print_r ($ this-> Session> Userdata ()); public function setflash () // ställa in flashdata $ this-> session-> set_flashdata ('flash_welcome', 'Hej, välkommen till webbplatsen!'); // markera befintliga data som flashdata $ this-> session-> set_userdata ('flash_message', 'I'm flash message!'); $ This-> Session> mark_as_flash (flash_message '); omdirigera ( 'exempel / GetFlash'); offentlig funktion getflash () // få flash data echo "Flash välkomstmeddelande:". $ This-> Session> flashdata (flash_welcome '); eko "'; print_r ($ this-> Session> flashdata ()); public function tempdata () // set temp data $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // markera befintliga 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'); allmän funktion förstör () $ this-> session-> set_userdata ('favorite_website', 'http://tutsplus.com'); // destory session $ this-> session-> sess_destroy ();Det är en mycket grundläggande kontrollerfil du borde vara bekant med som en CodeIgniter-utvecklare. Nu är vi redo att flytta till nästa avsnitt som ger insikt i koncepten för hantering av session.
Så här lägger du till, hämtar och tar bort sessiondata
Till att börja med, låt oss hämta koden för vår
__konstruera
metod.offentlig funktion __construct () förälder :: __ construct (); // ladda session biblioteket $ this-> ladda-> bibliotek ("session"); // ladda urlhjälpar $ this-> load-> hjälper ('url');Bara om du inte har autoloaded sessionbiblioteket kommer det att göra det i första hand. Bortsett från det har vi också laddat
url
hjälpen som tillåter oss att använda vissa verktygsmetoder som vi kommer att se senare.Ta sedan tag i koden för
index
metod.public function index () / **** SET SESSION DATA **** / // ställa in enstaka objekt i session $ this-> session-> set_userdata ('favorite_website', 'http://tutsplus.com'); // set array of items in session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni' 'interests' => array ('tennis', 'resa')); $ This-> Session> set_userdata ($ arraydata); / **** FÅ SESSION DATA **** / // Hämta data från sessionen echo "Favoritwebbplats:". $ This-> Session> Userdata (favourite_website '); eko "
"; echo" Författarnamn: ". $ this-> session-> userdata ('author_name'); echo"
"echo" Intressen (Array-exempel): ". $ this-> session-> userdata ('intressen') [0]; echo"
"; // få e'thing lagras i session samtidigt echo"'; print_r ($ this-> Session> Userdata ()); / **** FEL AV SESSION DATA **** / // unset specifik nyckel från session $ this-> session-> unset_userdata ('favorite_website'); // avmarkera flera objekt på en gång $ keys = array ('twitter_id', 'interests'); $ This-> Session> unset_userdata (nycklar $); eko "'; print_r ($ this-> Session> Userdata ());När du har laddat in sessionbiblioteket redan kan du använda
$ This-> session
för att komma åt sessionsobjektet och få åtkomst till de metoder som stöds. Deset_userdata
Metoden används för att skapa en ny sessionsvariabel och i allmänhet tar det två argument-nyckel och värde.$ this-> session-> set_userdata ("favoritwebbplats", "http://tutsplus.com");Du kan också använda
set_userdata
Metod för att skapa flera variabler i ett enda samtal. I det fallet behöver du bara ange ett argument, och det ska vara en matris som visas nedan.// set array of items in session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni' 'interests' => array ('tennis', 'resa')); $ This-> Session> set_userdata ($ arraydata);Användare med skarpa ögon skulle ha märkt att du också kan tilldela en array som ett värde av någon session variabel, som visas ovan i
intressen
exempel.Nu, låt oss se hur man hämtar värdet av någon session variabel. De
användardata
Metoden används för att hämta värdet på någon session variabel och vanligtvis behöver den nyckeln till den session variabel du letar efter som första argumentet.echo "Favoritwebbplats:". $ This-> Session> Userdata (favourite_website ');Om du letar efter en av matrisposterna kan du använda följande:
eko "Ränta (Array Exempel):". $ This-> Session-> userdata ( 'intressen') [0];Ofta vill du veta hur många variabler totalt lagras i en aktiv session för debugging, och det kan du också göra.
// få e'thing lagras i session samtidigt echo ''; print_r ($ this-> Session> Userdata ());Ja, detsamma
användardata
Metoden kommer till vår räddning! Om du inte skickar något argument tillanvändardata
metod kommer det att returnera alla session variabler.Slutligen, låt oss se hur du kan ta bort variabler från sessionen. Det är
unset_userdata
metod som du kan använda om du vill ta bort eventuella sessionsuppgifter.// Unset specifik nyckel från session $ this-> session-> unset_userdata ('favorite_website');Och här är variationen av samma metod som visar hur man tar bort flera poster samtidigt.
// avmarkera flera objekt på en gång $ keys = array ('twitter_id', 'interests'); $ This-> Session> unset_userdata (nycklar $);Och det borde ta bort
twitter_id
ochintressen
poster från sessionen.Fortsätt och testa
index
metod för att se saker i åtgärd.Användbara godsaker: Flashdata och Tempdata
I det sista avsnittet diskuterade vi grunderna för sessionshantering i CodeIgniter. I det här avsnittet diskuterar vi några andra verktyg som tillhandahålls av sessionen.
I din dagliga utveckling behöver du ofta visa meddelanden som svar på vissa användaråtgärder. Som ett exempel vill du visa ett succémeddelande när någon postar en kommentar på din webbplats, och meddelandet ska bara visas en gång. De
set_flashdata
Metod är en perfekt kandidat för denna typ av användningsfall.Faktiskt,
set_flashdata
är mycket lik denset_userdata
metod genom att det låter dig spara ett värde i sessionen. Det enda undantaget är att det sessionsvärde som anges avflashdata
Metoden är endast tillgänglig för nästa begäran. I efterföljande förfrågningar kommer du inte längre kunna komma åt dessa variabler när de rensades.Ta tag i koden för
setflash
metod.public function setflash () // ställa in flashdata $ this-> session-> set_flashdata ('flash_welcome', 'Hej, välkommen till webbplatsen!'); // markera befintliga data som flashdata $ this-> session-> set_userdata ('flash_message', 'I'm flash message!'); $ This-> Session> mark_as_flash (flash_message '); omdirigera ( 'exempel / GetFlash');Du kan skapa en ny
flashdata
variabel på samma sätt som du skulle ha skapat en vanlig session variabel med hjälp avset_userdata
metod. Å andra sidan kan du också markera en existerande session variabel som enflashdata
variabel. I så fall måste du användamark_as_flash
metod, som visas i ovanstående kod.Slutligen omdirigerar vi användaren till
GetFlash
metod som visar hur man använder flashdata-variabler som ställdes in isetflash
metod. Låt oss ta en titt påGetFlash
metod.offentlig funktion getflash () // få flash data echo "Flash välkomstmeddelande:". $ This-> Session> flashdata (flash_welcome '); eko "'; print_r ($ this-> Session> flashdata ());Som förväntat finns det en
flashdata
metod som låter dig hämta session variabler lagrade som flashdata. Om du ringer tillflashdata
metod utan några argument, det kommer att returnera alla flashdata variabler som liknar den föranvändardata
metod.Fortsätt och testa
setflash
metod. Du omdirigeras till getflash-webbadressen och du får se meddelandet. Om du uppdaterar getflash-sidan ser du inte meddelandet igen!Därefter finns en annan variant som tillhandahålls av sessionsbiblioteket i den här kategorin - Tempdata-sessionvariablerna. Om du vill skapa sessionvariabler för en viss tidsperiod, ska
set_tempdata
Metoden är den du letar efter.Om du till exempel vill skapa en session variabel som automatiskt ska raderas efter en viss tidsperiod, kan du använda
set_tempdata
metod för att skapa en sådan variabel, som visas i följande metod.allmän funktion tempdata () // set temp data $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // markera befintliga 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
Metoden anger antalet sekunder efter vilka variabeln kommer att raderas från sessionen.Du kan också markera en existerande session variabel som tempdata med hjälp av
mark_as_temp
metod förutsatt att du redan har skapat en session variabel med hjälp avset_userdata
metod.Slutligen kan du använda
tempdata
metod för att hämta värdet av någon tempdata-variabel.Så det är trevligt att ha sådana användningsmetoder till ditt förfogande i din dagliga utvecklingslivscykel!
Vad du inte bör glömma: Session förstör
Att förstöra sessionen är förmodligen det sista du vill göra när användaren loggar ut. Det säkerställer att sessionvariablerna hittills raderas från den aktiva sessionen och är inte längre tillgängliga för efterföljande förfrågningar.
Låt oss dra in koden för
förstöra
metod och gå igenom den.allmän funktion förstör () $ this-> session-> set_userdata ('favoritwebbplats', 'http://tutsplus.com'); // förstör session $ this-> session-> sess_destroy ();Det är
sess_destroy
metod som hjälper oss att förstöra den aktiva sessionen. Självklart tar det också bort tempdata och flashdata-variabler som ställdes in i den aktiva sessionen.Se till att du blir van vid att förstöra en session när den inte längre är användbar i den nuvarande användarkontexten.
Körsbär på toppen: Session Drivers
Vi går in i det sista avsnittet i denna artikel-sessionsdrivrutinerna. Ofta stör du inte om att konfigurera sessionsdrivrutinen i din ansökan som standard sessionsdrivrutin, är filsystemet konfigurerat redan med standardinställningen.
Så det är filsystemet som innehåller all sessionsrelaterad data, och den används ofta och är den accepterade standarden för sessionshantering. Med detta sagt, stöder CodeIgniter även andra sessiondrivrutiner som du kan använda om du vill byta från standardfilsystemet.
Här är en lista över alla stödda sessionsdrivrutiner i CodeIgniter:
Databas-drivrutinen, som namnet antyder, lagrar sessionsdata i databasen som du har konfigurerat för ditt CodeIgniter-program.
Å andra sidan är de andra två sessionsdrivrutinerna lagringsmekanismer för minne som är föredragna för högpresterande webbplatser.
I application / config / config.php
fil kan du konfigurera den sessionsdrivrutin som du vill använda i din ansökan.
$ config ['sess_driver'] = 'databas'; $ config ['sess_save_path'] = 'custom_sessions';
Det berättar CodeIgniter att använda databas sessionsdrivrutinen och sessionsdata sparas i custom_sessions
MySQL-tabellen.
Diskussionen om varje sessiondrivare ligger utanför ramen för denna artikel, men du kan gå igenom den officiella webbplatsdokumentationen som ger en djupguide för varje förare.
Sessionshantering i CodeIgniter var ämnet för dagens handledning, och vi diskuterade det noggrant genom att titta på alla aspekter av ämnet.
Från och med grundläggande sessionsoperationer gick vi även igenom de coola flashdata- och tempdata-metoderna, och det var diskussionen om sessiondrivrutiner som avslutade vår artikel.
Som alltid kan du skrika ut dina frågor och förslag med hjälp av flödet nedan!