www.webdeveloper.com
Results 1 to 5 of 5

Thread: about session variable naming

  1. #1
    Join Date
    Mar 2011
    Posts
    105

    about session variable naming

    I just discovered that doing this
    Code:
    $_SESSION['var1'] = null;
    $var1 = 'something';
    will throw this warning
    Code:
    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
    Why is there any a priori relationship between $_SESSION['var'] and $var???
    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
    http://stackoverflow.com/questions/1...source-of-data
    it says to do this
    Code:
    ini_set('session.bug_compat_warn', 0);
    ini_set('session.bug_compat_42', 0);
    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
    Code:
    $var = $_SESSION['var'];
    ??? I do it all the time for convenience later in the script. Bummer.

  2. #2
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    19,616
    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:
    PHP Code:
    $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

    eBookworm.us

  3. #3
    Join Date
    May 2012
    Posts
    42
    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:
    PHP Code:
    session.bug_compat_warn 0
    session
    .bug_compat_42 
    You may have to restart Apache, and/or add the path to your php.ini file ... again it depends on your server setup.

    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:
    Code:
    php_flag session.bug_compat_42 0
    php_flag session.bug_compat_warn 0
    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.

  4. #4
    Join Date
    Mar 2011
    Posts
    105
    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

  5. #5
    Join Date
    May 2012
    Posts
    59
    Quote Originally Posted by Pacopag View Post
    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!

    Kind regards,
    Scott

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles