| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.session.savehandler.dbtable">
- <title>Zend_Session_SaveHandler_DbTable</title>
- <para>
- Das Basis Setup für <classname>Zend_Session_SaveHandler_DbTable</classname> muß zumindest
- vier Spalten haben, die wie folgt im Config Array oder <classname>Zend_Config</classname>
- 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
- (<command>modified + lifetime > time();</command>); und data, sind die serialisierten
- Daten die in der Session gespeichert werden.
- </para>
- <example id="zend.session.savehandler.dbtable.basic">
- <title>Basis Setup</title>
- <programlisting language="SQL"><![CDATA[
- CREATE TABLE `session` (
- `id` char(32),
- `modified` int,
- `lifetime` int,
- `data` text,
- PRIMARY KEY (`id`)
- );
- ]]></programlisting>
- <programlisting language="php"><![CDATA[
- // Datenbank Verbindung vorbereiten
- $db = Zend_Db::factory('Pdo_Mysql', array(
- 'host' =>'example.com',
- 'username' => 'dbuser',
- 'password' => '******',
- 'dbname' => 'dbname'
- ));
- // Entweder den Standardadapter Zend_Db_Table setzen
- // oder eine DB-Verbindung direkt an den save Handler $config übergeben
- Zend_Db_Table_Abstract::setDefaultAdapter($db);
- $config = array(
- 'name' => 'session',
- 'primary' => 'id',
- 'modifiedColumn' => 'modified',
- 'dataColumn' => 'data',
- 'lifetimeColumn' => 'lifetime'
- );
- // Erstellen der Zend_Session_SaveHandler_DbTable und
- // Setzen des save Handlers für Zend_Session
- Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
- // Session starten
- Zend_Session::start();
- // Jetzt kann Zend_Session wie sonst verwendet werden
- ]]></programlisting>
- </example>
- <para>
- Man kann auch mehrere Spalten im Primarykey für
- <classname>Zend_Session_SaveHandler_DbTable</classname> verwenden.
- </para>
- <example id="zend.session.savehandler.dbtable.multi-column-key">
- <title>Mehr-Spalten Primary-Keys verwenden</title>
- <programlisting language="SQL"><![CDATA[
- CREATE TABLE `session` (
- `session_id` char(32) NOT NULL,
- `save_path` varchar(32) NOT NULL,
- `name` varchar(32) NOT NULL DEFAULT '',
- `modified` int,
- `lifetime` int,
- `session_data` text,
- PRIMARY KEY (`Session_ID`, `save_path`, `name`)
- );
- ]]></programlisting>
- <programlisting language="php"><![CDATA[
- // Die DB Verbindung wie vorher einrichten
- // BEACHTE: Diese Config wird auch an Zend_Db_Table übergeben sodas
- // spezielles für die Tabelle genauso in die Config gegeben werden kann
- $config = array(
- 'name' => 'session', // Tabellenname von Zend_Db_Table
- 'primary' => array(
- 'session_id', // Die SessionID von PHP
- 'save_path', // session.save_path
- 'name', // Session Name
- ),
- 'primaryAssignment' => array(
- // Man muß dem Save-Handler mitteilen welche Spalten man als
- // Primary-Key verwendet. DIE REIHENFOLGE IST WICHITG
- 'sessionId', // Erste Spalte des Primary-Keys ist die sessionID
- 'sessionSavePath', // Zweite Spalte des Primary-Keys ist der save-path
- 'sessionName', // Dritte Spalte des Primary-Keys ist der Session Name
- ),
- 'modifiedColumn' => 'modified', // Zeit nach der die Session abläuft
- 'dataColumn' => 'session_data', // Serialisierte Daten
- 'lifetimeColumn' => 'lifetime', // Lebensende für einen speziellen Eintrag
- );
- // Zend_Session mitteilen das der Save Handler verwendet werden soll
- Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
- // Session starten
- Zend_Session::start();
- // Zend_Session wie normal verwenden
- ]]></programlisting>
- </example>
- </sect1>
|