diff options
| author | fisharebest <fisharebest@gmail.com> | 2010-10-05 10:31:26 +0000 |
|---|---|---|
| committer | fisharebest <fisharebest@gmail.com> | 2010-10-05 10:31:26 +0000 |
| commit | 3bf82e2afbb0e8ea4a4aa730476054cbc0fce75d (patch) | |
| tree | eed2cf1047dbc31ae83c8764fb120498dbb4262c /includes | |
| parent | 968855a7d9c41d25d5b5af361ca0cbce6dcf7dc7 (diff) | |
| download | webtrees-3bf82e2afbb0e8ea4a4aa730476054cbc0fce75d.tar.gz webtrees-3bf82e2afbb0e8ea4a4aa730476054cbc0fce75d.tar.bz2 webtrees-3bf82e2afbb0e8ea4a4aa730476054cbc0fce75d.zip | |
Temporary fix: DB-based session storage causing problems with PHP5.2 sites.
Diffstat (limited to 'includes')
| -rw-r--r-- | includes/session.php | 65 |
1 files changed, 34 insertions, 31 deletions
diff --git a/includes/session.php b/includes/session.php index b224bd8dbb..0ef4872087 100644 --- a/includes/session.php +++ b/includes/session.php @@ -273,37 +273,40 @@ if ($SEARCH_SPIDER && !array_key_exists(WT_SCRIPT_NAME , array( } // Store our session data in the database. -session_set_save_handler( - function($save_path, $session_name) { // open - return true; - }, - function() { // close - return true; - }, - function($id) { // read - return WT_DB::prepare( - "SELECT session_data FROM `##session` WHERE session_id=?" - )->execute(array($id))->fetchOne(); - }, - function($id, $data) { // write - WT_DB::prepare( - "REPLACE INTO `##session` (session_id, user_id, ip_address, session_data) VALUES (?,?,?,?)" - )->execute(array($id, WT_USER_ID, $_SERVER['REMOTE_ADDR'], $data)); - return true; - }, - function($id) { // destroy - WT_DB::prepare( - "DELETE FROM `##session` WHERE session_id=?" - )->execute(array($id)); - return true; - }, - function($maxlifetime) { // gc - WT_DB::prepare( - "DELETE FROM `##session` WHERE session_time < DATE_SUB(NOW(), INTERVAL ? SECOND)" - )->execute(array($maxlifetime)); - return true; - } -); +// TODO: this doesn't seem to work on PHP 5.2. +if (version_compare(PHP_VERSION, '5.2', '>=')) { + session_set_save_handler( + function($save_path, $session_name) { // open + return true; + }, + function() { // close + return true; + }, + function($id) { // read + return WT_DB::prepare( + "SELECT session_data FROM `##session` WHERE session_id=?" + )->execute(array($id))->fetchOne(); + }, + function($id, $data) { // write + WT_DB::prepare( + "REPLACE INTO `##session` (session_id, user_id, ip_address, session_data) VALUES (?,?,?,?)" + )->execute(array($id, WT_USER_ID, $_SERVER['REMOTE_ADDR'], $data)); + return true; + }, + function($id) { // destroy + WT_DB::prepare( + "DELETE FROM `##session` WHERE session_id=?" + )->execute(array($id)); + return true; + }, + function($maxlifetime) { // gc + WT_DB::prepare( + "DELETE FROM `##session` WHERE session_time < DATE_SUB(NOW(), INTERVAL ? SECOND)" + )->execute(array($maxlifetime)); + return true; + } + ); +} // Use the Zend_Session object to start the session. // This allows all the other Zend Framework components to integrate with the session |
