So arbeiten Sie mit Sitzungsdaten in CodeIgniter

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.

So laden Sie eine Sitzungsbibliothek

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. Das set_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 übergeben Benutzerdaten 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 und Interessen 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 ähnlich set_userdata Diese Methode ermöglicht es Ihnen, einen Wert in einer Sitzung zu speichern. Die einzige Ausnahme ist, dass der Sitzungswert von festgelegt wird flashdata 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 der set_userdata Methode. Andererseits können Sie eine vorhandene Sitzungsvariable auch als markieren flashdata Variable. In diesem Fall müssen Sie die mark_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 wurden Setflash Methode. Werfen wir einen kurzen Blick auf die Getflash 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 anrufst flashdata Methode ohne Argumente, gibt sie alle flashdata - Variablen zurück, die der von Benutzerdaten 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 der set_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:

  • Dateien
  • Datenbank
  • Redis
  • Memcached

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.

Fazit

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!