ID: 47088 Comment by: typoon at gmail dot com Reported By: guido_jansen at gmx dot de Status: Open Bug Type: Session related Operating System: Win XP PHP Version: 5.2.8 New Comment:
I am unable to reproduce the issue on PHP 5.2.8 (cli) and am unable to reproduce on PHP 5.3.0alpha4 on both Windows XP and Linux. Please try the code below and see if you see the issue. Perhaps you have some code problem there? In case you still see the issue, please provide more details on how and where you are executing the code <?php class SessionClass { public function _open($save_path, $session_name) {} public function _close() {} public function _read($id) { return true; } public function _write($id, $session_data) { var_dump($session_data); } public function _destroy($id) {} public function _gc($max) {} } $ses_class = new SessionClass(); if (!session_set_save_handler(array(&$ses_class,'_open') ,array(&$ses_class,'_close') ,array(&$ses_class,'_read') ,array(&$ses_class,'_write') ,array(&$ses_class,'_destroy') ,array(&$ses_class,'_gc'))) { die("Unable to set handlers"); } session_start(); //echo "Session id is: ".session_id()."\n"; $_SESSION['a'] = 'b'; function temp() { $_SESSION['c'] = 'd'; } temp(); session_write_close(); // this will call custom _write function Previous Comments: ------------------------------------------------------------------------ [2009-01-13 12:41:54] guido_jansen at gmx dot de Description: ------------ I'm using a custom save handler to store my session information in a database. The save handler is much like the one on http://www.zend.com/zend/spotlight/code-gallery-wade8.php Everything works fine except one thing If I change the $_SESSION from within a function, then the argument which should contain the session_data is emtpy Reproduce code: --------------- session_start(); session_set_save_handler( [...] array(&$ses_class, '_write' [...]); // ... $_SESSION['a'] = 'b'; function temp() { $_SESSION['c'] = 'd'; } // ... session_write_close(); // this will call custom _write function ------------------------------------- class Session() { // ... function _write($id, $data) { var_dump($data); // <---- here is the output // ... } // ... } Expected result: ---------------- Inside the custom session write function, the second argument should dump as string(20) "a|s:1:"b";c|s:1:"d";" Actual result: -------------- Actually the output is string(0) "" ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47088&edit=1