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?

8 hozzászólás

  1. gphilip, 2009. július 23., 16:05

    5.2.9-cel és 5.2.5-tel működik…
    Fiddler?

     
  2. cadmagician, 2009. július 23., 16:34

    megnézem. köszi.

     
  3. cadmagician, 2009. július 24., 10:43

    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.

     
  4. cadmagician, 2009. július 24., 14:12

    suhosin.ini ahol a modot tolti be:

    suhosin.session.encrypt = On

    helyett

    suhosin.session.encrypt = Off

     
  5. feki, 2009. július 26., 13:22

    É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ó…

     
  6. csman007, 2009. augusztus 10., 14:14

    esetleg próbáld meg ugy, h hogy a session_start() helyett irj mindenhova @session_start() - ot

     
  7. cadmagician, 2009. augusztus 10., 14:16

    a @ 99%ban varacskolás. de fentebb beírtam mi a megfejtés.

     
  8. sarki_roka, 2009. szeptember 15., 20:02

    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

     

Új hozzászólás: