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?

5.2.9-cel és 5.2.5-tel működik…
Fiddler?
megnézem. köszi.
kommunikácio jonak tuni.
az még a tapasztalat, hogy ha a kukit törlöm, és ugyanabba a bööngészőbe adom be alinket, akkor felkapja, egyébként uj sessiont nyit. érthetetlen.
suhosin.ini ahol a modot tolti be:
suhosin.session.encrypt = On
helyett
suhosin.session.encrypt = Off
Én is szívtam ilyennel egy flash alapú fájlfeltöltőnél, ahol a sessionid-t postban kellett továbbítani, majd session_start()-nál megadni a postolt id-t és újra feláll a session.
Na, de nem ment…nekem sem…azóta sincs rá megoldásom sajnos.
Várom, hátha ide jön valami használható…
esetleg próbáld meg ugy, h hogy a session_start() helyett irj mindenhova @session_start() - ot
a @ 99%ban varacskolás. de fentebb beírtam mi a megfejtés.
kódból? ini_set nem csinálja amit várok tőle. ellenben nekem ha session_id(…)-vel együtt (utána) hivom meg a session_start()-ot, akkor hiba nélkül 30 sec-es várakozás után visszaad semmit. ini_set-re rá se hederít