  |
26 | 26 | | */ |
| |
27 | 27 | | |
| |
28 | 28 | | public function __construct($name = null) { |
  |
29 | | - | $this->setName($name); |
| |
30 | | - | $this->_setCookieParameters(); |
| |
| 29 | + | parent::__construct($name); |
|
31 | 30 | | |
| |
32 | 31 | | session_set_save_handler(array(&$this, '_custom_open'), |
| |
33 | 32 | | array(&$this, '_custom_close'), |
| |
|
|
 |
… |
|
60 | 59 | | /** |
| |
61 | 60 | | * Read session data from the database based session storage handler |
| |
62 | 61 | | * |
  |
| 62 | + | * @param string $id The ID of the session |
|
63 | 63 | | * @access protected |
| |
64 | 64 | | */ |
| |
65 | 65 | | |
  |
66 | | - | protected function _custom_read($key) { |
| |
| 66 | + | protected function _custom_read($id) { |
|
67 | 67 | | global $osC_Database; |
| |
68 | 68 | | |
  |
69 | | - | $Qsession = $osC_Database->query('select value from :table_sessions where sesskey = :sesskey and expiry > :expiry limit 1'); |
| |
| 69 | + | $Qsession = $osC_Database->query('select value from :table_sessions where sesskey = :sesskey'); |
|
70 | 70 | | $Qsession->bindTable(':table_sessions', TABLE_SESSIONS); |
  |
71 | | - | $Qsession->bindValue(':sesskey', $key); |
| |
72 | | - | $Qsession->bindRaw(':expiry', time()); |
| |
| 71 | + | $Qsession->bindValue(':sesskey', $id); |
|
73 | 72 | | $Qsession->execute(); |
| |
74 | 73 | | |
| |
75 | 74 | | if ( $Qsession->numberOfRows() === 1 ) { |
| |
|
|
 |
… |
|
86 | 85 | | /** |
| |
87 | 86 | | * Writes session data to the database based session storage handler |
| |
88 | 87 | | * |
  |
| 88 | + | * @param string $id The ID of the session |
| |
| 89 | + | * @param string $value The session data to store |
|
89 | 90 | | * @access protected |
| |
90 | 91 | | */ |
| |
91 | 92 | | |
  |
92 | | - | protected function _custom_write($key, $value) { |
| |
| 93 | + | protected function _custom_write($id, $value) { |
|
93 | 94 | | global $osC_Database; |
| |
94 | 95 | | |
  |
95 | | - | if ( !$SESS_LIFE = (int)ini_get('session.gc_maxlifetime') ) { |
| |
96 | | - | $SESS_LIFE = 1440; |
| |
97 | | - | } |
| |
98 | | - | |
| |
99 | | - | $expiry = time() + $SESS_LIFE; |
| |
100 | | - | |
| |
101 | | - | $Qsession = $osC_Database->query('select sesskey from :table_sessions where sesskey = :sesskey limit 1'); |
| |
| 96 | + | $Qsession = $osC_Database->query('select sesskey from :table_sessions where sesskey = :sesskey'); |
|
102 | 97 | | $Qsession->bindTable(':table_sessions', TABLE_SESSIONS); |
  |
103 | | - | $Qsession->bindValue(':sesskey', $key); |
| |
| 98 | + | $Qsession->bindValue(':sesskey', $id); |
|
104 | 99 | | $Qsession->execute(); |
| |
105 | 100 | | |
| |
106 | 101 | | if ( $Qsession->numberOfRows() === 1 ) { |
| |
|
|
 |
… |
|
109 | 104 | | $Qsession = $osC_Database->query('insert into :table_sessions values (:sesskey, :expiry, :value)'); |
| |
110 | 105 | | } |
| |
111 | 106 | | $Qsession->bindTable(':table_sessions', TABLE_SESSIONS); |
  |
112 | | - | $Qsession->bindValue(':sesskey', $key); |
| |
113 | | - | $Qsession->bindValue(':expiry', $expiry); |
| |
| 107 | + | $Qsession->bindValue(':sesskey', $id); |
| |
| 108 | + | $Qsession->bindValue(':expiry', time()); |
|
114 | 109 | | $Qsession->bindValue(':value', $value); |
| |
115 | 110 | | $Qsession->execute(); |
| |
116 | 111 | | |
| |
117 | 112 | | return ( $Qsession->affectedRows() === 1 ); |
| |
118 | 113 | | } |
| |
119 | 114 | | |
| |
120 | 115 | | /** |
  |
121 | | - | * Deletes the session data from the database based session storage handler |
| |
| 116 | + | * Destroys the session data from the database based session storage handler |
|
122 | 117 | | * |
  |
| 118 | + | * @param string $id The ID of the session |
|
123 | 119 | | * @access protected |
| |
124 | 120 | | */ |
| |
125 | 121 | | |
  |
126 | | - | protected function _custom_destroy($key) { |
| |
127 | | - | global $osC_Database; |
| |
128 | | - | |
| |
129 | | - | $Qsession = $osC_Database->query('delete from :table_sessions where sesskey = :sesskey'); |
| |
130 | | - | $Qsession->bindTable(':table_sessions', TABLE_SESSIONS); |
| |
131 | | - | $Qsession->bindValue(':sesskey', $key); |
| |
132 | | - | $Qsession->execute(); |
| |
| 122 | + | protected function _custom_destroy($id) { |
| |
| 123 | + | return $this->delete($id); |
|
133 | 124 | | } |
| |
134 | 125 | | |
| |
135 | 126 | | /** |
| |
136 | 127 | | * Garbage collector for the database based session storage handler |
| |
137 | 128 | | * |
  |
| 129 | + | * @param string $max_life_time The maxmimum time a session should exist |
|
138 | 130 | | * @access protected |
| |
139 | 131 | | */ |
| |
140 | 132 | | |
  |
141 | | - | protected function _custom_gc($maxlifetime) { |
| |
| 133 | + | protected function _custom_gc($max_life_time) { |
|
142 | 134 | | global $osC_Database; |
| |
143 | 135 | | |
| |
144 | 136 | | $Qsession = $osC_Database->query('delete from :table_sessions where expiry < :expiry'); |
| |
145 | 137 | | $Qsession->bindTable(':table_sessions', TABLE_SESSIONS); |
  |
146 | | - | $Qsession->bindValue(':expiry', time()); |
| |
| 138 | + | $Qsession->bindValue(':expiry', time() - $max_life_time); |
|
147 | 139 | | $Qsession->execute(); |
  |
| 140 | + | |
| |
| 141 | + | return ( $Qsession->affectedRows() > 0 ); |
|
148 | 142 | | } |
| |
149 | 143 | | |
| |
150 | 144 | | /** |
| |
151 | 145 | | * Deletes the session data from the database based session storage handler |
| |
152 | 146 | | * |
  |
153 | | - | * @access protected |
| |
154 | | - | * @see _custom_destroy() |
| |
| 147 | + | * @param string $id The ID of the session |
| |
| 148 | + | * @access public |
|
155 | 149 | | */ |
| |
156 | 150 | | |
  |
157 | | - | protected function _delete() { |
| |
| 151 | + | public function delete($id = null) { |
| |
| 152 | + | global $osC_Database; |
| |
| 153 | + | |
| |
| 154 | + | if ( empty($id) ) { |
| |
| 155 | + | $id = $this->_id; |
| |
| 156 | + | } |
| |
| 157 | + | |
| |
| 158 | + | $Qsession = $osC_Database->query('delete from :table_sessions where sesskey = :sesskey'); |
| |
| 159 | + | $Qsession->bindTable(':table_sessions', TABLE_SESSIONS); |
| |
| 160 | + | $Qsession->bindValue(':sesskey', $id); |
| |
| 161 | + | $Qsession->execute(); |
| |
| 162 | + | |
| |
| 163 | + | return ( $Qsession->affectedRows() === 1 ); |
  |
158 | 164 | | } |
| |
159 | 165 | | } |
| |
160 | 166 | | ?> |