Bug #12600 Updated: Session_register & register_globals=off ---> strange behaviour?
| From: | jeroen@php.net | Date: | Mon, 06 Aug 2001 19:39:56 +0000 |
| Subject: | Bug #12600 Updated: Session_register & register_globals=off ---> strange behaviour? | ||
| References: | 1 | Groups: | php.dev php.doc |
| Request: | Send a blank email to php-dev+get-62341@lists.php.net to get a copy of this message | ||
ID: 12600
Updated by: jeroen
Reported By: tr909@bigfoot.com
Old Summary: unexpected behaviour
Status: Open
Old Bug Type: Session related
Bug Type: Documentation problem
Operating System: linux redhat 7.1
PHP Version: 4.0.6
New Comment:
Fixed title, didn't verify this.
Previous Comments:
------------------------------------------------------------------------
[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