ID:               27688
 Comment by:       rodolfo_gonzalez at hotmail dot com
 Reported By:      ryan at daelibs dot com dot au
 Status:           Assigned
 Bug Type:         Session related
 Operating System: Redhat 9
 PHP Version:      5.0.0RC1
 Assigned To:      amt
 New Comment:

This happens also in PHP 4.3.9, on RedHat 9 and Slackware (from 8.1 to
10.0).


Previous Comments:
------------------------------------------------------------------------

[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 10:23:02] [EMAIL PROTECTED]

Confirmed.
Is this really a doc issue?

------------------------------------------------------------------------

[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

Reply via email to