Bug #18559 Updated: Session variables not stored when register_globals is off
| From: | jensen at byu dot edu | Date: | Fri, 26 Jul 2002 07:13:01 +0000 |
| Subject: | Bug #18559 Updated: Session variables not stored when register_globals is off | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-15298@lists.php.net to get a copy of this message | ||
ID: 18559
Updated by: jensen@byu.edu
Reported By: jensen@byu.edu
-Status: Bogus
+Status: Open
Bug Type: Session related
Operating System: Windows 2000
PHP Version: 4.2.2
New Comment:
rverlander@php.net:
Thank you, but I don't think you understood the question. I am aware
that as of PHP 4.2.0 register_globals is off. The problem therein is
this: According to the documentation, you should still be able to use
session variables in the following manner:
$_SESSION['myvar'] = "something";
or if you prefer:
$HTTP_SESSION_VARS['myvar'] = "something";
In fact, the documentation states:
"If track_vars is enabled and register_globals is disabled, only
members of the global associative array $HTTP_SESSION_VARS can be
registered as session variables. The restored session variables will
only be available in the array $HTTP_SESSION_VARS."
Well, that makes sense, but it sure doesn't work when I use it under
PHP 4.2.2 / Apache 1.3.26 / Win2K, as illustrated in the original
example. Maybe I'm just not getting something, in which case I
apologize and would greatly appreciate an explanation - but only after
having thoroughly examined the problem ;)
Thanks again.
Previous Comments:
------------------------------------------------------------------------
[2002-07-26 01:52:08] rverlander@php.net
In PHP 4.2.0, the 'register_globals' setting default changed to
be off. See http://www.php.net/release_4_2_0.php
for more info.
We are sorry about the inconvenience, but this change was a necessary
part of our efforts to make PHP scripting more secure and portable.
------------------------------------------------------------------------
[2002-07-25 14:39:25] max@ahston.se
Strange.
I added "php_flag register_globals on" in the .htaccess file for the
programs that had the problems in 4.2.2 and squrrielmail worked again.
Squrrielmail depends on this to be "on", and a major change in 4.2.0
was that this was turned off. Eventough it doesn't seem to have come to
an effect before 4.2.2 now was released.
------------------------------------------------------------------------
[2002-07-25 11:59:02] max@ahston.se
I have also noticed several webapplications based on PHP to stop
working.
For example does SquirrelMail not work after changing to Apache
1.3.26+php4.2.2..
But going back to Apache 1.3.26+php4.2.1 there is no problem.
I haven't looked deep into the problem, but as the first user reported
it seems to be session based.
For example there is calender application where you jump back and forth
between different months. When running 4.2.2 it doesn't change month
but show the same whatever you do..
Running Redhat with Linux 2.4.18-5smp
------------------------------------------------------------------------
[2002-07-25 11:58:32] max@ahston.se
I have also noticed several webapplications based on PHP to stop
working.
For example does SquirrelMail not work after changing to Apache
1.3.26+php4.2.2..
But going back to Apache 1.3.26+php4.2.1 there is no problem.
I haven't looked deep into the problem, but as the first user reported
it seems to be session based.
For example there is calender application where you jump back and forth
between different months. When running 4.2.2 it doesn't change month
but show the same whatever you do..
Running Redhat with Linux 2.4.18-5smp
------------------------------------------------------------------------
[2002-07-25 03:59:17] jensen@byu.edu
I discovered this earlier today, and then while reading through the
user comments under "Session handling functions" looking for a
solution, I discovered I wasn't the only one with the same problem.
Here it is:
When register_globals is off (as it should be), under Win2K, Apache
1.3.26, PHP 4.2.2, I cannot for the life of me get session variables to
work as they should. I've read the documentation thoroughly, and can't
find a solution. Here's some sample code (which incidentally runs
perfectly fine on my other web server - Linux, Apache 1.3.26, PHP
4.2.1)
--- page1.php -----------------------
<?
session_start();
$_SESSION['sess_var'] = "Hello World!";
echo "The content of session variable is ";
echo $_SESSION['sess_var'];
?>
<a href = "page2.php">Next page</a>
-------------------------------------
This file outputs correctly what is expected. But next file does
not...
--- page2.php -----------------------
<?
session_start();
if (isset($_SESSION['sess_var']))
{
$sess_var = $_SESSION['sess_var'];
echo "The content of \$sess_var is $sess_var";
}
else
echo "The session variable does not exist!
";
?>
So is this a bug specific to PHP 4.2.2? Or only Win 2K? Any help would
be greatly appreciated.
Incidentally, ever since I upgraded from 4.2.0, IE won't display
several of my PHP scripts, while Netscape and Opera will... Hmmm. All I
get is an "Internal Server Error" message... Any suggestions would be
great.
-Jon
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=18559&edit=1