Als CodeIgniter-Entwickler ist es sehr wichtig, dass Sie wissen, wie Sie mit der Hauptsitzungsbibliothek arbeiten. Natürlich können Sie immer den Standard verwenden $ _SESSION
Syntax, es wird jedoch immer empfohlen, stattdessen den Wrapper zu verwenden.
Wir beginnen mit dem Laden einer Sitzungsbibliothek und gehen nun zu den Diskussionen über das Hinzufügen, Abrufen, Entfernen und Löschen von Sitzungsvariablen. Im letzten Abschnitt werden wir uns die verschiedenen integrierten Sitzungstreiber ansehen, die Ihnen das CodeIgniter-Framework selbst zur Verfügung stellt.
Wenn Sie mit Sitzungen in CodeIgniter arbeiten möchten, benötigen Sie als erstes eine integrierte Sitzungsbibliothek. Wenn Sie keine Webanwendung entwickeln, für die keine Sitzungen erforderlich sind, sollten Sie sich nicht um die Sitzungsbibliothek kümmern. Während dies meistens nicht der Fall ist, können Sie die Sitzungsbibliothek automatisch in CodeIgniter laden, sodass sie Sitzungsbehandlungsfunktionen für jede Webanforderung aktiviert.
Fahren Sie fort und öffnen Sie die Datei unter Anwendung / config / autoload.php
. Finden Sie den folgenden Abschnitt.
/ * | -------------------------------------------------- ----------------- | Bibliotheken automatisch laden | -------------------------------------------------- ----------------- | Dies sind die Klassen, die sich in system / libraries / oder in | befinden Verzeichnis "application / libraries /" mit dem Zusatz | Datenbankbibliothek, eine Art Sonderfall. | | Vorbild: | | $ autoload ['libraries'] = Array ('Datenbank', 'E-Mail', 'Sitzung'); | | Sie können auch einen alternativen Bibliotheksnamen angeben, der zugewiesen werden soll im Controller: | | $ autoload ['libraries'] = Array ('user_agent' => 'ua'); * / $ autoload ['libraries'] = array ();
Das $ autoload ['Bibliotheken']
Array enthält die Liste der Bibliotheken, die automatisch geladen werden müssen. Ändern Sie es gemäß unserer Anforderung so, dass es folgendermaßen aussieht:
$ autoload ['libraries'] = Array ('Sitzung');
Es gibt auch einen anderen Weg, wie Sie das erreichen könnten. Sie können den folgenden Code irgendwo in Ihrer Controller-Datei verwenden, um die Sitzungsbibliothek zu laden.
$ this-> load-> library ('session');
Das ist so ziemlich alles, was die Initialisierung der Sitzungsbibliothek angeht.
In den nächsten Abschnitten gehen wir die verschiedenen Operationen durch, die Sie mit der Hauptsitzungsbibliothek ausführen können. Zur Veranschaulichung erstellen wir eine Beispiel-Controller-Datei, die die Sitzungsbibliothek lädt und Methoden enthält, die in diesem Artikel beschrieben werden.
Fahren Sie fort und erstellen Sie eine Datei Anwendung / Controller / Beispiel.php
mit folgenden Inhalten.
load-> library ('session'); // load url helper $ this-> load-> helper ('url'); public function index () / **** SET SESSION DATA **** / // setze ein einzelnes Element in Sitzung $ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com') ; // Set Array der Elemente in Session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', "Interessen" => Array ("Tennis", "Reisen")); $ this-> session-> set_userdata ($ arraydata); / **** SITZUNGSDATEN ERHALTEN **** / // Daten vom Sitzungsecho "Favorite Website:" abrufen. $ this-> session-> userdata ('favourite_website'); Echo "
"; echo" Name des Autors: ". $ this-> session-> userdata ('author_name'); echo"
"; echo" Interest (Array-Beispiel): ". $ this-> session-> userdata ('interest') [0]; echo"
"; // Holen Sie sich alles in einer Sitzung auf einmal Echo ''; print_r ($ this-> session-> userdata ()); / **** SITZUNGSDATEN ENTFERNEN **** / // bestimmten Schlüssel aus Sitzung $ this-> session-> unset_userdata ('favourite_website'); // Mehrere Elemente auf einmal löschen $ keys = array ('twitter_id', 'interest'); $ this-> session-> unset_userdata ($ keys); Echo ''; print_r ($ this-> session-> userdata ()); public function setflash () // setze Flashdaten $ this-> session-> set_flashdata ('flash_welcome', 'Hey, willkommen auf der Website!'); // Vorhandene Daten als Flash-Daten kennzeichnen $ this-> session-> set_userdata ('flash_message', 'Ich bin eine Flash-Nachricht!'); $ this-> session-> mark_as_flash ('flash_message'); Weiterleitung ('example / getflash'); public function getflash () // Flash-Datenecho erhalten "Flash welcome message:". $ this-> session-> flashdata ('flash_welcome'); Echo ''; print_r ($ this-> session-> flashdata ()); public function tempdata () // Setze temporäre Daten $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // Vorhandene Daten als temporäre Daten kennzeichnen $ this-> session-> set_userdata ('coupon_code', 'XYEceQ!'); $ this-> session-> mark_as_temp ('coupon_code', 300); // Zeitdaten erhalten echo $ this-> session-> tempdata ('coupon_code'); public function destroy () $ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com'); // destory session $ this-> session-> sess_destroy ();Dies ist eine sehr einfache Controller-Datei, die Sie als CodeIgniter-Entwickler kennen sollten. Nun können wir zu den nächsten Abschnitten übergehen, die Einblick in die Konzepte der Sitzungsverarbeitung bieten.
Hinzufügen, Abrufen und Entfernen von Sitzungsdaten
Lassen Sie uns zunächst den Code von unserem abrufen
__konstruieren
Methode.öffentliche Funktion __construct () parent :: __ construct (); // Session Library laden $ this-> load-> library ('session'); // load url helper $ this-> load-> helper ('url');Nur für den Fall, dass Sie die Sitzungsbibliothek nicht automatisch geladen haben, wird dies in erster Linie geschehen. Abgesehen davon haben wir auch die
url
Helfer, mit dem wir bestimmte Dienstprogrammmethoden verwenden können, die wir später sehen werden.Als nächstes den Code von
Index
Methode.public function index () / **** SET SESSION DATA **** / // setze ein einzelnes Element in der Sitzung $ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com'); // Set Array der Elemente in Session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', "Interessen" => Array ("Tennis", "Reisen")); $ this-> session-> set_userdata ($ arraydata); / **** SITZUNGSDATEN ERHALTEN **** / // Daten vom Sitzungsecho "Favorite Website:" abrufen. $ this-> session-> userdata ('favourite_website'); Echo "
"; echo" Name des Autors: ". $ this-> session-> userdata ('author_name'); echo"
"; echo" Interest (Array-Beispiel): ". $ this-> session-> userdata ('interest') [0]; echo"
"; // Holen Sie sich alles in einer Sitzung auf einmal Echo ''; print_r ($ this-> session-> userdata ()); / **** SITZUNGSDATEN ENTFERNEN **** / // bestimmten Schlüssel aus Sitzung $ this-> session-> unset_userdata ('favourite_website'); // Mehrere Elemente auf einmal löschen $ keys = array ('twitter_id', 'interest'); $ this-> session-> unset_userdata ($ keys); Echo ''; print_r ($ this-> session-> userdata ());Da Sie die Sitzungsbibliothek bereits geladen haben, können Sie verwenden
$ this-> session
um auf das Sitzungsobjekt zuzugreifen und auf die unterstützten Methoden zuzugreifen. Dasset_userdata
Die Methode wird zum Erstellen einer neuen Sitzungsvariablen verwendet. Im Allgemeinen sind zwei Argumentschlüssel und ein Wert erforderlich.$ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com');Sie können auch die
set_userdata
Methode zum Erstellen mehrerer Variablen in einem einzigen Aufruf. In diesem Fall müssen Sie nur ein Argument angeben, und es sollte ein Array sein, wie unten gezeigt.// Set Array der Elemente in Session $ arraydata = array ('author_name' => 'Sajal Soni', 'website' => 'http://code.tutsplus.com', 'twitter_id' => '@sajalsoni', "Interessen" => Array ("Tennis", "Reisen")); $ this-> session-> set_userdata ($ arraydata);Benutzer mit scharfen Augen hätten bemerkt, dass Sie ein Array auch als Wert einer beliebigen Sitzungsvariablen zuweisen können (siehe oben)
Interessen
Beispiel.Sehen wir uns nun an, wie Sie den Wert einer Sitzungsvariablen abrufen können. Das
Benutzerdaten
Diese Methode wird verwendet, um den Wert einer Sitzungsvariablen abzurufen. Normalerweise benötigt sie den Schlüssel der gesuchten Sitzungsvariablen als erstes Argument.echo "Favorite Website:". $ this-> session-> userdata ('favourite_website');Wenn Sie nach einem der Array-Einträge suchen, können Sie Folgendes verwenden:
echo "Interesse (Array-Beispiel):". $ this-> session-> userdata ('interest') [0];In den meisten Fällen möchten Sie wissen, wie viele Variablen in einer aktiven Sitzung zu Debugging-Zwecken insgesamt gespeichert sind. Dies ist auch möglich.
// alles in der Session auf einmal gespeichert echo ''; print_r ($ this-> session-> userdata ());Ja das Gleiche
Benutzerdaten
Methode kommt zu unserer Rettung! Wenn Sie kein Argument an den übergebenBenutzerdaten
Diese Methode gibt alle Sitzungsvariablen zurück.Lassen Sie uns abschließend sehen, wie Sie Variablen aus der Sitzung entfernen können. Es ist das
unset_userdata
Methode, die Sie verwenden können, wenn Sie Sitzungseinträge entfernen möchten.// bestimmten Schlüssel aus der Sitzung nicht setzen $ this-> session-> unset_userdata ('favourite_website');Und hier ist die Variante derselben Methode, die zeigt, wie Sie mehrere Einträge in einem Arbeitsgang entfernen können.
// Mehrere Elemente auf einmal löschen $ keys = array ('twitter_id', 'interest'); $ this-> session-> unset_userdata ($ keys);Und das sollte das löschen
twitter_id
undInteressen
Einträge aus der Sitzung.Mach weiter und teste das
Index
Methode, um Dinge in Aktion zu sehen.Nützliche Goodies: Flashdata und Tempdata
Im letzten Abschnitt haben wir die Grundlagen der Sitzungsbehandlung in CodeIgniter erläutert. In diesem Abschnitt werden einige andere Dienstprogrammmethoden beschrieben, die von der Sitzungsbibliothek bereitgestellt werden.
In Ihrer täglichen Entwicklung müssen Sie häufig Meldungen als Reaktion auf bestimmte Benutzeraktionen anzeigen. Sie möchten beispielsweise eine Erfolgsmeldung anzeigen, wenn jemand einen Kommentar zu Ihrer Site veröffentlicht, und die Nachricht sollte nur einmal angezeigt werden. Das
set_flashdata
method ist ein perfekter Kandidat für diese Art von Anwendungsfall.Eigentlich,
set_flashdata
ist dem sehr ähnlichset_userdata
Diese Methode ermöglicht es Ihnen, einen Wert in einer Sitzung zu speichern. Die einzige Ausnahme ist, dass der Sitzungswert von festgelegt wirdflashdata
Methode ist nur für die nächste Anfrage verfügbar. In nachfolgenden Anforderungen können Sie auf diese Variablen nicht mehr zugreifen, da sie gelöscht wurden.Schnapp dir den Code von
Setflash
Methode.public function setflash () // setze Flashdaten $ this-> session-> set_flashdata ('flash_welcome', 'Hey, willkommen auf der Website!'); // Vorhandene Daten als Flash-Daten kennzeichnen $ this-> session-> set_userdata ('flash_message', 'Ich bin eine Flash-Nachricht!'); $ this-> session-> mark_as_flash ('flash_message'); Weiterleitung ('example / getflash');Sie können ein neues erstellen
flashdata
auf dieselbe Weise wie Sie eine reguläre Sitzungsvariable mit derset_userdata
Methode. Andererseits können Sie eine vorhandene Sitzungsvariable auch als markierenflashdata
Variable. In diesem Fall müssen Sie diemark_as_flash
Methode, wie im obigen Code gezeigt.Schließlich leiten wir den Benutzer auf die
Getflash
Methode, die zeigt, wie Flashdata - Variablen verwendet werden, die im festgelegt wurdenSetflash
Methode. Werfen wir einen kurzen Blick auf dieGetflash
Methode.public function getflash () // Flash-Datenecho erhalten "Flash welcome message:". $ this-> session-> flashdata ('flash_welcome'); Echo ''; print_r ($ this-> session-> flashdata ());Wie erwartet gibt es eine
flashdata
Eine Methode, mit der Sie Sitzungsvariablen abrufen können, die als Flashdaten gespeichert sind. Wenn du anrufstflashdata
Methode ohne Argumente, gibt sie alle flashdata - Variablen zurück, die der vonBenutzerdaten
Methode.Mach weiter und teste das
Setflash
Methode. Sie werden zur getflash-URL weitergeleitet und sehen die Nachricht. Wenn Sie die Getflash-Seite aktualisieren, wird diese Nachricht nicht mehr angezeigt!Als nächstes gibt es eine weitere Variante der Sitzungsbibliothek in dieser Kategorie - die Tempdata-Sitzungsvariablen. Wenn Sie Sitzungsvariablen für einen bestimmten Zeitraum erstellen möchten,
set_tempdata
Methode ist die, nach der Sie suchen.Wenn Sie beispielsweise eine Sitzungsvariable erstellen möchten, die nach einem bestimmten Zeitraum automatisch gelöscht werden soll, können Sie die verwenden
set_tempdata
Methode, um eine solche Variable zu erstellen, wie in der folgenden Methode gezeigt.public function tempdata () // Setze temporäre Daten $ this-> session-> set_tempdata ('coupon_code', 'XYEceQ!', 300); // Vorhandene Daten als temporäre Daten kennzeichnen $ this-> session-> set_userdata ('coupon_code', 'XYEceQ!'); $ this-> session-> mark_as_temp ('coupon_code', 300); // Zeitdaten erhalten echo $ this-> session-> tempdata ('coupon_code');Das dritte Argument in der
set_tempdata
method gibt die Anzahl der Sekunden an, nach denen die Variable aus der Sitzung gelöscht wird.Sie können eine vorhandene Sitzungsvariable auch als Tempdata markieren
mark_as_temp
Methode vorausgesetzt, Sie haben bereits eine Sitzungsvariable mit derset_userdata
Methode.Schließlich können Sie die
Tempdata
Methode, um den Wert einer beliebigen Tempdata-Variablen abzurufen.Daher ist es schön, solche Hilfsmethoden im täglichen Entwicklungszyklus zur Verfügung zu haben!
Was Sie nicht vergessen sollten: Session Destroy
Das Zerstören der Sitzung ist wahrscheinlich das letzte, was Sie tun möchten, wenn sich der Benutzer abmeldet. Es stellt sicher, dass die bisher eingestellten Sitzungsvariablen aus der aktiven Sitzung gelöscht werden und für nachfolgende Anforderungen nicht mehr verfügbar sind.
Lassen Sie uns den Code der
zerstören
Methode und gehen Sie durch.public function destroy () $ this-> session-> set_userdata ('favourite_website', 'http://tutsplus.com'); // Session zerstören $ this-> session-> sess_destroy ();Es ist das
sess_destroy
Methode, die uns hilft, die aktive Sitzung zu zerstören. Natürlich werden auch Tempdata- und Flashdata-Variablen gelöscht, die in der aktiven Sitzung festgelegt wurden.Stellen Sie sicher, dass Sie die Gewohnheit haben, eine Sitzung zu zerstören, sobald sie im aktuellen Benutzerkontext nicht mehr nützlich ist.
Kirsche an der Spitze: Sitzungstreiber
Wir befinden uns im letzten Abschnitt dieses Artikels, den Sitzungstreibern. Meistens kümmern Sie sich nicht darum, den Sitzungstreiber in Ihrer Anwendung zu konfigurieren, da der Standardsitzungstreiber, das Dateisystem, bereits mit der Standardeinstellung konfiguriert ist.
Es ist also das Dateisystem, das alle sitzungsbezogenen Daten enthält, und es ist weit verbreitet und ist der akzeptierte Standard für die Sitzungsbehandlung. Darüber hinaus unterstützt CodeIgniter auch andere Sitzungstreiber, die Sie verwenden können, wenn Sie vom standardmäßigen Dateisystemsitzungstreiber wechseln möchten.
Hier ist eine Liste aller unterstützten Sitzungstreiber in CodeIgniter:
Der Datenbanksitzungstreiber speichert, wie der Name schon sagt, die Sitzungsdaten in der Datenbank, die Sie für Ihre CodeIgniter-Anwendung konfiguriert haben.
Andererseits sind die beiden anderen Sitzungstreiber In-Memory-Speichermechanismen, die für Hochleistungs-Websites bevorzugt werden.
In dem Anwendung / config / config.php
In dieser Datei können Sie den Sitzungstreiber konfigurieren, den Sie in Ihrer Anwendung verwenden möchten.
$ config ['sess_driver'] = 'Datenbank'; $ config ['sess_save_path'] = 'custom_sessions';
Es teilt CodeIgniter mit, den Datenbanksitzungstreiber zu verwenden, und die Sitzungsdaten werden im gespeichert custom_sessions
MySQL-Tabelle.
Die Besprechung jedes einzelnen Sitzungstreibers sprengt den Rahmen dieses Artikels. Sie können jedoch die offizielle Dokumentation der Website durchgehen, die einen ausführlichen Leitfaden für jeden Treiber enthält.
Das Session-Handling in CodeIgniter war das Thema des heutigen Tutorials. Wir haben es ausführlich besprochen, indem wir jeden Aspekt des Themas betrachtet haben.
Beginnend mit den grundlegenden Sitzungsvorgängen haben wir uns auch mit den coolen Flashdata- und Tempdata-Methoden befasst, und es war die Diskussion der Sitzungstreiber, die unseren Artikel zum Abschluss brachte.
Wie immer können Sie Ihre Fragen und Vorschläge mithilfe des unten stehenden Feeds ausrufen!