Zend_Session-SaveHandler-DbTable.xml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 13170 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.session.savehandler.dbtable">
  5. <title>Zend_Session_SaveHandler_DbTable</title>
  6. <para>Le paramétrage basique pour <classname>Zend_Session_SaveHandler_DbTable</classname> doit contenir au moins quatre
  7. colonnes, décrites dans une configuration de type <code>array</code> ou objet <classname>Zend_Config</classname> : "primary"
  8. qui est la clé primaire et reçoit par défaut l'ID de session dont le format est par défaut une chaîne de 32
  9. caractères ; "modifiedColumn" qui est le timestamp Unix de la date de dernière modification ; "lifetimeColumn" qui
  10. est la durée de vie de la session ("modified" + "lifetime" doit être supérieur à "time()") ; et "dataColumn" qui est
  11. la donnée sérialisée stockée en session.</para>
  12. <example id="zend.session.savehandler.dbtable.basic">
  13. <title>Paramétrage basique</title>
  14. <programlisting role="SQL"><![CDATA[
  15. CREATE TABLE `session` (
  16. `id` char(32),
  17. `modified` int,
  18. `lifetime` int,
  19. `data` text,
  20. PRIMARY KEY (`id`)
  21. );
  22. ]]></programlisting>
  23. <programlisting role="php"><![CDATA[
  24. // Préparation de l'adaptateur de connexion à la base de données
  25. $db = Zend_Db::factory('Pdo_Mysql', array(
  26. 'host' =>'example.com',
  27. 'username' => 'dbuser',
  28. 'password' => '******',
  29. 'dbname' => 'dbname'
  30. ));
  31. // Vous pouvez soit passer l'adaptateur par défaut à Zend_Db_Table
  32. // ou l'objet $db dans votre tableau $config
  33. Zend_Db_Table_Abstract::setDefaultAdapter($db);
  34. $config = array(
  35. 'name' => 'session',
  36. 'primary' => 'id',
  37. 'modifiedColumn' => 'modified',
  38. 'dataColumn' => 'data',
  39. 'lifetimeColumn' => 'lifetime'
  40. );
  41. // Création de votre Zend_Session_SaveHandler_DbTable
  42. // et paramétrage du gestionnaire de sauvegarde à Zend_Session
  43. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  44. // Démarrage de la session
  45. Zend_Session::start();
  46. // Vous pouvez maintenant utiliser Zend_Session comme avant
  47. ]]></programlisting>
  48. </example>
  49. <para>Vous pouvez aussi utiliser des colonnes multiples pour votre clé primaire de
  50. <classname>Zend_Session_SaveHandler_DbTable</classname>.</para>
  51. <example id="zend.session.savehandler.dbtable.multi-column-key">
  52. <title>Utilisation d'une clé primaire multi-colonnes</title>
  53. <programlisting role="SQL"><![CDATA[
  54. CREATE TABLE `session` (
  55. `session_id` char(32) NOT NULL,
  56. `save_path` varchar(32) NOT NULL,
  57. `name` varchar(32) NOT NULL DEFAULT '',
  58. `modified` int,
  59. `lifetime` int,
  60. `session_data` text,
  61. PRIMARY KEY (`Session_ID`, `save_path`, `name`)
  62. );
  63. ]]></programlisting>
  64. <programlisting role="php"><![CDATA[
  65. // Préparation de l'adaptateur de connexion à la base de données comme ci-dessus
  66. // NOTE : cette configuration est fournie à Zend_Db_Table donc tout élément spécifique à la table peut y être ajouté
  67. $config = array(
  68. 'name' => 'session',
  69. // Nom de la table comme pour Zend_Db_Table
  70. 'primary' => array(
  71. 'session_id',
  72. // l'ID de session fourni par PHP
  73. 'save_path',
  74. // session.save_path
  75. 'name',
  76. // session name
  77. ),
  78. 'primaryAssignment' => array(
  79. // vous devez avertir le gestionnaire de sauvegarde quelles colonnes
  80. // vous utilisez en tant que clé primaire. L'ORDRE EST IMPORTANT.
  81. 'sessionId',
  82. // - la première colonne de la clé primaire est l'ID de session
  83. 'sessionSavePath',
  84. // - la seconde colonne de la clé primaire est le "save path"
  85. 'sessionName',
  86. // - la troisième colonne de la clé primaire est le "session name"
  87. ),
  88. 'modifiedColumn' => 'modified',
  89. // date de la dernière modification
  90. 'dataColumn' => 'session_data',
  91. // donnée sérialisée
  92. 'lifetimeColumn' => 'lifetime',
  93. // durée de vie de l'enregistrement
  94. );
  95. // Informez Zend_Session d'utiliser votre gestionnaire de sauvegarde
  96. Zend_Session::setSaveHandler(
  97. new Zend_Session_SaveHandler_DbTable($config)
  98. );
  99. // Démarrage de la session
  100. Zend_Session::start();
  101. // Utilisez Zend_Session normalement
  102. ]]></programlisting>
  103. </example>
  104. </sect1>