Bug #12600 Updated: Session_register & register_globals=off ---> strange behaviour?
| From: | sniper@php.net | Date: | Sun, 25 Nov 2001 00:44:00 +0000 |
| Subject: | Bug #12600 Updated: Session_register & register_globals=off ---> strange behaviour? | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-71567@lists.php.net to get a copy of this message | ||
ID: 12600
Updated by: sniper
Reported By: tr909@bigfoot.com
Old Status: Open
Status: Closed
Bug Type: Session related
Operating System: linux redhat 7.1
PHP Version: 4.0.6
New Comment:
Use $_SESSION[] which is introduced in PHP 4.1.0.
Latest RC can be found here:
http://www.php.net/~zeev/php-4.1.0RC3.tar.gz
Previous Comments:
------------------------------------------------------------------------
[2001-08-06 15:39:56] jeroen@php.net
Fixed title, didn't verify this.
------------------------------------------------------------------------
[2001-08-06 11:40:31] tr909@bigfoot.com
function sess_reg($x){
global $HTTP_SESSION_VARS;
$a = & $HTTP_SESSION_VARS[$x];
session_register($a);
echo $a;
$GLOBALS[$x] = & $HTTP_SESSION_VARS[$x];
}
this seems to work but it is still strange that
session_register("$HTTP_SESSION_VARS[$x]");
or even
session_register("$HTTP_SESSION_VARS["foo");
do not work inside a function.
even more strange
is that HTTP_SESSION_VARS[$x] does not even exist
at the time you set a reference to it? maybe, i'm
curious now, that session_register() doesn't like
arrays but with register_globals = off you just have
the SESSION-VARS array
------------------------------------------------------------------------
[2001-08-06 11:23:34] tr909@bigfoot.com
1. when register_globals is off you have to
SET and READ HTTP_SESSION_VARS this is wrong in the docs or
at least confusing (example 1 on
http://www.php.net/manual/en/ref.session.php
)
BUG
2. session_register cannot be called from inside another
funcion (when trying a by reference call this generates a
call-time reference error on some servers)
function & sess_reg($x){
global $HTTP_SESSION_VARS;
session_register(& $HTTP_SESSION_VARS[$x]);
$GLOBALS[$x] = & $HTTP_SESSION_VARS[$x];
}
//session_start();
sess_reg("foo");
echo $foo++;
when using session_register($HTTP_SESSION_VARS[$x]);
the variable is NOT registered. and when used by reference
(as in example above) generates a "Warning: Call-time
pass-by-reference has been deprecated -
argument passed by value;"
Tr909
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=12600&edit=1