ID: 27688
Updated by: [EMAIL PROTECTED]
Reported By: ryan at daelibs dot com dot au
-Status: Bogus
+Status: Open
-Bug Type: Session related
+Bug Type: Documentation problem
Operating System: *
PHP Version: 5CVS, 4CVS (2005-01-10)
Assigned To: amt
New Comment:
There should be a big fat warning about this in the manual.
Previous Comments:
------------------------------------------------------------------------
[2005-07-29 18:29:48] [EMAIL PROTECTED]
Session name can NOT be a plain number.
No checks will be added since that'd make the code slower for no real
gain.
------------------------------------------------------------------------
[2004-03-29 09:39:15] [EMAIL PROTECTED]
This happens because PHP turns a numeric session name
into an array index inside $_COOKIE and we're doing an
zend_hash_find() instead of a zend_hash_index_find().
(ext/session/session.c, line 1098).
We can probably fix the bug by doing a
zend_hash_index_find() instead if the session name
successfully converts to a integer.
------------------------------------------------------------------------
[2004-03-29 04:53:03] unknown at simplemachines dot org
Here's a simple workaround:
<?php
// This name works.
//session_name('A9');
// This name doesn't...
session_name('99');
// Force the last session id, not the detected one.
session_id($_COOKIE[session_name()]);
session_start();
echo '
Session Name: ', session_name(), '<br />
Session ID: ', session_id(), '<br />
Cookie: ', $_COOKIE[session_name()];
?>
Removing the session_id() line though, shows that the cookie is still
being properly set.
-[Unknown]
------------------------------------------------------------------------
[2004-03-25 00:00:26] ryan at daelibs dot com dot au
Description:
------------
When you use a session name that has only numbers, each call to
session_start seems to regenerate a new session id, so the session does
not persist.
The code below can be loaded and refreshed to reproduce the behaviour
Reproduce code:
---------------
<?php
//This name works
//session_name('A9');
//This name doesn't
session_name('99');
session_start();
echo 'Session Name: '.session_name().'<br />';
echo 'Session Id: '.session_id().'<br />';
?>
Expected result:
----------------
Session Name: 99
Session Id: {{a sid that remains the same between each refresh }}
Actual result:
--------------
Session Name: 99
Session Id: {{a different sid each refresh}}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27688&edit=1