Archive for július, 2009

PHP: session_id() nem működik

Egy napja fennálló probléma, megoldást nem találtam még rá, segítsetek. A következő van:
A session_id(’1234566′); beállítja a sid-et a megadottra, ezután session_start-tal ergo “felkaphatunk” egy már meglévő sessiont. Lássunk rá egy tesztkódot:

      if (isset($_GET['destroy'])) { ## csak a játszásiból
            session_start();
            setcookie(session_name(), '', time()-42000, '/');
            session_destroy();
            exit;
      }
      if (isset($_GET['setsid'])) {
            session_id($_GET['setsid']);
            session_start();
            echo (session_id()==$_GET['setsid'] ? 'ugyanaz':'nem ugyanaz').'';
            if (!empty($_SESSION['test'])) {
                echo $_SESSION['test'];
            } else {
                echo 'nem mukodik.';
            }
            exit;
      }
      session_start();
      $_SESSION['test'] = 'test';
      echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?setsid='.session_id().'';
      echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?destroy';

Tehát indítok egy sessiont, test változóba test érték, majd kiíratom a linket, amit egy másik böngészőbe betéve “test” feliratnak kéne megjelenni. Ehelyett az jelenik meg, hogy ‘nem mukodik.’ A session id-t megkapja, az lesz, aminek kell lenni, de a $_SESSION mégis üres. A fenti script működik PHP 5.2.6 alatt (átkapja a sessiont a másik böngésző), de 5.2.10 alatt nem(üres a $_SESSION). A php.ini elvben egyezik a két verzióban.

Ötlet?