Welcome to the Cookbook

loading...

5.7 Sessions

Die CakePHP Session-Komponente ermöglicht es Benutzerdaten zwischen verschiedenen Seitenanbesuchen zwischen zu speichern. Sie handelt als Wrapper für die $_SESSION von PHP und bietet verschiedene Methoden für Funktionen in Bezug auf $_SESSION.

Sitzungen können auf einigen Wegen dauerhaft gespeichert werden. Der Standard ist es, dass die Einstellungen von PHP verwendet werden; wie auch immer, es gibt auch andere Möglichkeiten.

cake
Speichert die Sitzungsdateien im Ordner app/tmp/sessions.

Sitzungen/Sessions können auf einige Arten dauerhaft sein. Im Normalfall werden in CakePHP die Standeinstellungen von PHP benutzt; Wie dem auch sei, es bestehen auch weiter, andere Optionen.

cake
Die Session-Dateien werden im Ordner app/tmp/sessions gespeichert.
database
Die Sitzungen werden in CakePHP's Datenbank gespeichert.
cache
Nutzt die mit Cache::config() konfigurierte Caching-Engine. Sehr hilfreich im Zusammenhang mit Memcache (bei Setups mit mehreren Applikations-Servern), um sowohl gecachte, als auch Sitzungsdaten zu speichern.
php
Die Standardeinstellung. Speichert Sitzungsdaten, wie in der php.ini angegeben.

Um die Standardeinstellung zu ändern, muss die Session.save-Konfiguration in die gewünschte Option geändert werden. Wenn Sie 'database' wählen, dann sollten Sie ebenfalls die Session.database-Einstellung auskommentieren und die SQL-Session-Datenbank-Datei, welche sich im Ordner app/config befindet in Ihrer Datenbank ausführen.

Um eine selbst definierte Konfiguration zu verwenden, können Sie die Session.save-Einstellung auf einen Dateinamen setzen. CakePHP wird dann diese Datei aus Ihrem CONFIGS-Verzeichnis für diese Einstellung benutzen.

// app/config/core.php
Configure::write('Session.save','my_session');
  1. // app/config/core.php
  2. Configure::write('Session.save','my_session');

Dies erlaubt Ihnen das Session-Handling zu verändern.

// app/config/my_session.php
//
// Revert value and get rid of the referrer check even when,
// Security.level is medium
ini_restore('session.referer_check');

ini_set('session.use_trans_sid', 0);
ini_set('session.name', Configure::read('Session.cookie'));

// Cookie is now destroyed when browser is closed, doesn't 
// persist for days as it does by default for security
// low and medium
ini_set('session.cookie_lifetime', 0);

// Cookie path is now '/' even if you app is within a sub 
// directory on the domain
$this->path = '/';
ini_set('session.cookie_path', $this->path);

// Session cookie now persists across all subdomains
ini_set('session.cookie_domain', env('HTTP_BASE'));
  1. // app/config/my_session.php
  2. //
  3. // Revert value and get rid of the referrer check even when,
  4. // Security.level is medium
  5. ini_restore('session.referer_check');
  6. ini_set('session.use_trans_sid', 0);
  7. ini_set('session.name', Configure::read('Session.cookie'));
  8. // Cookie is now destroyed when browser is closed, doesn't
  9. // persist for days as it does by default for security
  10. // low and medium
  11. ini_set('session.cookie_lifetime', 0);
  12. // Cookie path is now '/' even if you app is within a sub
  13. // directory on the domain
  14. $this->path = '/';
  15. ini_set('session.cookie_path', $this->path);
  16. // Session cookie now persists across all subdomains
  17. ini_set('session.cookie_domain', env('HTTP_BASE'));