about session variable naming
I just discovered that doing this
will throw this warning
$_SESSION['var1'] = null;
$var1 = 'something';
Why is there any a priori relationship between $_SESSION['var'] and $var???
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
What really sucks is that I developed a decent-sized website that uses extensive use of this kind of thing. My local configuration wasn't giving the warning, but the live webserver is.
At the link below
it says to do this
Is this the only way around it aside from renaming my $var 's ? But do I have to do this on every single page that I made this naming violation? Is there another way to remove this warning. Is the warning serious?
Is this just as bad, or worse
??? I do it all the time for convenience later in the script. Bummer.
$var = $_SESSION['var'];
Not sure if that's a holdover from the bad old days of register_globals or not?
In any case, it shouldn't be a problem, but on the other hand, why assign a $_SESSION variable to another variable, when you already have it in the $_SESSION array? (Just to save a little typing later?) Or I suppose you could change the case or add an underscore or something:
$var_1 = $_SESSION['var1'];
"Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
~ Terry Pratchett in Nation
How to Ask Questions the Smart Way
(not affiliated with this site, but well worth reading)
I think it's related to older versions of PHP. If you can upgrade to the latest 5.3 version, I would. If only for security reasons.
To get around the error without upgrading PHP, and without using the ini_set directive in every PHP file, you can set the options in a custom php.ini, or in your .htaccess, depending on how PHP is set up on your system.
If you can override the default php.ini on your system, create a file php.ini and place it in your root web document folder (IE: public_html, www, or htdocs) then add the following two lines to the file:
You may have to restart Apache, and/or add the path to your php.ini file ... again it depends on your server setup.
session.bug_compat_warn = 0
session.bug_compat_42 = 0
If you don't have access to a custom php.ini file, you can add the following two lines to your .htaccess file in your root web documents folder:
Those two options can disable the warning globally, but the best solution is probably either to upgrade PHP or change the way you name your variables.
php_flag session.bug_compat_42 0
php_flag session.bug_compat_warn 0
Thanks for your replies. I checked into PHP version on the server and it's 5.2.17. I'm guessing that's the problem. I'm just gonna rename my variables. Cheers
You already have the variables in $_SESSION, session is a super global so it's accessable to every script. Why not just use $_SESSION itself? Would make your code easier to read!
Originally Posted by Pacopag
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)