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?

