summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorfisharebest <fisharebest@gmail.com>2010-10-05 10:31:26 +0000
committerfisharebest <fisharebest@gmail.com>2010-10-05 10:31:26 +0000
commit3bf82e2afbb0e8ea4a4aa730476054cbc0fce75d (patch)
treeeed2cf1047dbc31ae83c8764fb120498dbb4262c /includes
parent968855a7d9c41d25d5b5af361ca0cbce6dcf7dc7 (diff)
downloadwebtrees-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.php65
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