$_SESSION issue

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Tom

    #1

    $_SESSION issue

    I put together a code that checks for 2 post variables then stores them
    in a multi-dim $_SESSION array, something like this:

    If ( isset($_POST['value_a'] && isset($_POST['value_b']) )
    {
    $_SESSION['value']['a'] = $_POST['value_a'];
    $_SESSION['value']['b'] = $_POST['value_b'];
    }

    The problem was that $_SESSION['value']['b'] was being overwritten with
    the value for 'a' so that both $_SESSION['value'] vars ended up being
    the same (i.e. $_POST['value_b']. I thoroughly tested it to confirm
    that this was what happening.

    I solved the problem by changing the $_SESSION vars to
    $_SESSION['value_a'] and $_SESSION['value_b'].

    This was PHP 5, the WAMP package -- I know it's not the latest update
    of PHP 5.

    My question: is this a bug (perhaps since fixed) or is there a reason
    this would be expected behavior?

    Thanks,

    Tom


  • Justin Koivisto

    #2
    Re: $_SESSION issue

    Tom wrote:[color=blue]
    > I put together a code that checks for 2 post variables then stores them
    > in a multi-dim $_SESSION array, something like this:
    >
    > If ( isset($_POST['value_a'] && isset($_POST['value_b']) )
    > {
    > $_SESSION['value']['a'] = $_POST['value_a'];
    > $_SESSION['value']['b'] = $_POST['value_b'];
    > }
    >
    > The problem was that $_SESSION['value']['b'] was being overwritten with
    > the value for 'a' so that both $_SESSION['value'] vars ended up being
    > the same (i.e. $_POST['value_b']. I thoroughly tested it to confirm
    > that this was what happening.
    >
    > I solved the problem by changing the $_SESSION vars to
    > $_SESSION['value_a'] and $_SESSION['value_b'].
    >
    > This was PHP 5, the WAMP package -- I know it's not the latest update
    > of PHP 5.
    >
    > My question: is this a bug (perhaps since fixed) or is there a reason
    > this would be expected behavior?[/color]

    The only way that I forsee this being expected behavior is if
    $_POST['value_a'] == $_POST['value_b']

    Usually when I am assigning an array to a session key, I will use:

    $_SESSION['key'] = array('a'=>$a, 'b'=>$b);

    I have never had any problems using either method, and tested that on my
    two 5.1.1 installs which worked fine.

    --
    Justin Koivisto, ZCE - justin@koivi.co m

    Comment

    • Peter Fox

      #3
      Re: $_SESSION issue

      Following on from Tom's message. . .[color=blue]
      >I put together a code that checks for 2 post variables then stores them
      >in a multi-dim $_SESSION array, something like this:
      >
      >If ( isset($_POST['value_a'] && isset($_POST['value_b']) )
      >{
      > $_SESSION['value']['a'] = $_POST['value_a'];
      > $_SESSION['value']['b'] = $_POST['value_b'];
      >}
      >
      >The problem was that $_SESSION['value']['b'] was being overwritten with
      >the value for 'a' so that both $_SESSION['value'] vars ended up being
      >the same (i.e. $_POST['value_b']. I thoroughly tested it to confirm
      >that this was what happening.[/color]

      The following code works 'as advertised':
      <?php
      $SES['value']['a'] = 'va';
      $SES['value']['b'] = 'vb';
      print_r($SES);
      ?>
      to give
      Array ( [value] => Array ( [a] => va [b] => vb ) )

      It works with $_SESSION too.

      Are you operating in a foreach loop? If so this is a Gotcha.

      Although not particularly related to this problem but in a similar vein:
      Look up "variable variables" in the manual.

      // convert $ay['foo'] into $foo
      foreach($ay as $key => $val) {$$key = $ay[$key];}






      --
      PETER FOX Not the same since the bookshop idea was shelved
      peterfox@eminen t.demon.co.uk.n ot.this.bit.no. html
      2 Tees Close, Witham, Essex.
      Gravity beer in Essex <http://www.eminent.dem on.co.uk>

      Comment

      Working...