www.webdeveloper.com
Results 1 to 5 of 5

Thread: about session variable naming

  1. #1
    Join Date
    Mar 2011
    Posts
    103

    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,245
    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.
    Keith

    Freelance PHP Web Developer
    http://www.duvalltech.com/

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