Bug #42472 [Com]: $_SESSION[false] = 1; Notice: Unknown: Skipping numeric key 0. in Unknown on

From: Date: Tue, 10 Oct 2017 20:53:07 +0000
Subject: Bug #42472 [Com]: $_SESSION[false] = 1; Notice: Unknown: Skipping numeric key 0. in Unknown on
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-211617@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=42472&edit=1

 ID:                 42472
 Comment by:         jhawkins at locutius dot com
 Reported by:        jsnell at e-normous dot com
 Summary:            $_SESSION[false] = 1; Notice: Unknown: Skipping
                     numeric key 0. in Unknown on
 Status:             Not a bug
 Type:               Bug
 Package:            Session related
 Operating System:   10.4.10
 PHP Version:        5.2.3
 Block user comment: N
 Private report:     N

 New Comment:

Replies to this continue to miss the point... The bug is not that the functionality around $SESSION
is a wrong. It is that the error message is unhelpful when a person trips over this.

NOTE: The issue also happens when using this:
  $_SESSION[] = 1;

Or this:
   $row = <function that returns array from PDO::FETCH_BOTH or PDO::FETCH_NUMERIC>;
    if (!empty($row)) {
      foreach ($row as $key => $val) {
        $_SESSION[$key] = $val;
      }
    }

Shouldn't the message be something like:
  NOTICE: Unknown: Skipping unsupported numeric key assignment in $SESSION array.

And if possible (though I gather it's not), seems it should indicate the offending line of
code.


Previous Comments:
------------------------------------------------------------------------
[2013-07-30 02:05:17] aerosox at gmail dot com

Just to elaborate a little bit on why this didn't work for future readers. 
register_globals. PHP 5.4 has removed support for register_globals, so going 
forward you can in fact use numeric keys with $_SESSION. 

$_SESSION is a super global variable and they were treated "special" with 
register_globals. One of the things that makes a super global special is that it 
exists in all scopes without needing to use the 'global' keyword. With 
register_globals the other thing that made it special is that it creates 
variables for all of the child elements automatically... again in all scopes.

$_SESSION['username'] = 'Test';

The above would also set a variable $username = 'Test'; So if there was a 
$_SESSION[1] 
= 'Test'; It would attempt to set $1 = 'Test' which is not allowed. So when jani

said it was not possible to change, what was meant was it was not possible to 
change without 6 years of planning to remove register_globals support.

------------------------------------------------------------------------
[2012-11-03 13:45:42] aminviral2006 at gmail dot com

Hi,
I just encountered with this problem.
my session was like $_SESSION[0]['someid']

and i changed it to $_SESSION['someid'][0]
now it works fine.

Hope this helps you

------------------------------------------------------------------------
[2011-05-17 19:39:10] fgutierrez at ticomotorsports dot com

This is clearly a bug in PHP.

The answer from jani@php.net leaves too much to desire. Seems like jani was "washing their
hands" and leaving the problem to anyone else.

------------------------------------------------------------------------
[2007-08-30 09:16:06] jani@php.net

Rebogused: This is not possible to change and that's how it works.


------------------------------------------------------------------------
[2007-08-29 20:57:19] nforbes@php.net

This isn't exactly the problem. The problem is that the error 
message produced is incorrect -- not that the error shouldn't occur. 
It should not have an unknown file and a 0 line number, but rather 
the file and line number where the error occurred.

This is probably superglobal-array-specific, and seems to apply to 
any numeric key.

Reopening.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=42472


--
Edit this bug report at https://bugs.php.net/bug.php?id=42472&edit=1


Thread (8 messages)

« previous php.bugs (#211617) next »