#19740 [Opn->Fbk]: session_write_close() not passing new session vars when globals are turned off
| From: | sniper@php.net | Date: | Fri, 04 Oct 2002 00:34:50 +0000 |
| Subject: | #19740 [Opn->Fbk]: session_write_close() not passing new session vars when globals are turned off | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-21432@lists.php.net to get a copy of this message | ||
ID: 19740
Updated by: sniper@php.net
Reported By: shudson@crackerbarrel.com
-Status: Open
+Status: Feedback
Bug Type: Session related
Operating System: Red Hat Linux 7.3
PHP Version: 4.2.3
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php4-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-latest.zip
Previous Comments:
------------------------------------------------------------------------
[2002-10-03 13:56:01] shudson@crackerbarrel.com
OS - Red Hat 7.3
Web Server- Apache 1.3.23
PHP - 4.2.3
If globals are turned off when calling session_write_close() before a
page redirect, any new session data is not getting written when using
files. As a work around, if I use my on session handlers, I ignore the
session_data that gets passed to my session_write function and create
my own session data string like this:
function sess_write($key, $val)
{
// SGH - 10/03/2002
// globals off bug work around!!! The session data
// passed in is not always updated with new values.
// so we'll build our on session data from the
// super global $_SESSION.
$sesson_data = "";
while (list($name, $value) = each($_SESSION))
{
$$name = $value['tmp_name'];
if (is_string($value))
{
$session_data .=
$name.'|s:'.strlen($value).':'.chr(34).$value.chr(34).";";
}
elseif (is_int($value))
{
$session_data .= $name.'|i:'.$value.";";
}
elseif (is_float($value))
{
$session_data .= $name.'|d:'.$value.";";
}
}
$val = $session_data;
// more code ............
This works, however, seems to point to a PHP bug, since $val does not
contain the new varibles until I set it to the string I created from
the super global $_SESSION.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=19740&edit=1