Globales Session Management

Zend_Session_SaveHandler_DbTable

Das Basis Setup für Zend_Session_SaveHandler_DbTable muß zumindest vier Spalten haben, die wie folgt im Config Array oder Zend_Config Objekt beschrieben werden: primary, ist der Primary-Key und standardmäßig nur die SessionID welche standardmäßig ein String der Länge 32 ist; modified, ist der Unix-Timestamp des Datums der letzten Änderung; lifetime, ist die Lebenszeit der Session (modified + lifetime > time();); und data, sind die serialisierten Daten die in der Session gespeichert werden.

Example #1 Basis Setup

  1. span style="color: #ff0000;">`session` (
  2.   `id` char(32),
  3.   `modified``lifetime``data``id`)
  4. );
  1. // Datenbank Verbindung vorbereiten
  2. 'Pdo_Mysql''host'     =>'example.com',
  3.     'username' => 'dbuser',
  4.     'password' => '******',
  5.     'dbname'   => 'dbname'
  6. ));
  7.  
  8. // Entweder den Standardadapter Zend_Db_Table setzen
  9. // oder eine DB-Verbindung direkt an den save Handler $config übergeben
  10. 'name'           => 'session',
  11.     'primary'        => 'id',
  12.     'modifiedColumn' => 'modified',
  13.     'dataColumn'     => 'data',
  14.     'lifetimeColumn' => 'lifetime'
  15. );
  16.  
  17. // Erstellen der Zend_Session_SaveHandler_DbTable und
  18. // Setzen des save Handlers für Zend_Session
  19. // Session starten
  20. // Jetzt kann Zend_Session wie sonst verwendet werden

Man kann auch mehrere Spalten im Primarykey für Zend_Session_SaveHandler_DbTable verwenden.

Example #2 Mehr-Spalten Primary-Keys verwenden

  1. span style="color: #ff0000;">`session` (
  2.     `session_id``save_path``name`'',
  3.     `modified``lifetime``session_data``Session_ID`, `save_path`, `name`)
  4. );
  1. // Die DB Verbindung wie vorher einrichten
  2. // BEACHTE: Diese Config wird auch an Zend_Db_Table übergeben sodas
  3. // spezielles für die Tabelle genauso in die Config gegeben werden kann
  4. 'name'              => 'session', // Tabellenname von Zend_Db_Table
  5.     'primary''session_id',   // Die SessionID von PHP
  6.         'save_path',    // session.save_path
  7.         'name',         // Session Name
  8.     ),
  9.     'primaryAssignment'// Man muß dem Save-Handler mitteilen welche Spalten man als
  10.         // Primary-Key verwendet. DIE REIHENFOLGE IST WICHITG
  11.         'sessionId', // Erste Spalte des Primary-Keys ist die sessionID
  12.         'sessionSavePath', // Zweite Spalte des Primary-Keys ist der save-path
  13.         'sessionName', // Dritte Spalte des Primary-Keys ist der Session Name
  14.     ),
  15.     'modifiedColumn' => 'modified', // Zeit nach der die Session abläuft
  16.     'dataColumn'     => 'session_data', // Serialisierte Daten
  17.     'lifetimeColumn' => 'lifetime', // Lebensende für einen speziellen Eintrag
  18. );
  19.  
  20. // Zend_Session mitteilen das der Save Handler verwendet werden soll
  21. // Session starten
  22. // Zend_Session wie normal verwenden

Globales Session Management