Používání SESSION a Header

5 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Ahoj lidi mám problém na svém serveru uvedu to na příkladu page1.php ------------- session_start(); $_SESSION['one'] = 'one'; header("Location: $server/page2.php"); exit(); ------------- page2.php ------------- session_start(); if ($_SESSION['one'] == 'one') { die("It worked."); } else { die("It did not work."); } ------------- (page2.php outputs "It did not work.") mám podezření, že po přesměrování se vytvoří nové PHPSESSID a aby toho nebylo málo děje se to jen u některých uživatelů (cca tak 2 z 5) svůj server mohu editovat jak potřebuji, ale nikde sem nevygooglil nic co by mi pomohlo ještě přikládám nastevní session v php.ini Session Support enabled Registered save handlers files user Registered serializer handlers php php_binary wddx session.auto_start Off session.bug_compat_42 Off session.bug_compat_warn Off session.cache_expire 180 session.cache_limiter nocache session.cookie_domain no value session.cookie_httponly Off session.cookie_lifetime 0 session.cookie_path / session.cookie_secure Off session.entropy_file no value session.entropy_length 0 session.gc_divisor 1000 session.gc_maxlifetime 1440 session.gc_probability 1 session.hash_bits_per_character 5 session.hash_function 0 session.name PHPSESSID session.referer_check no value session.save_handler files session.save_path /home/domenacz/tmp session.serialize_handler php session.use_cookies On session.use_only_cookies On session.use_trans_sid 0 děkuji všem za rady...
  2. Málo informací -- děje se to pořád u stejných uživatelů? Nebo průběžně u všech, jenom ne vždycky? Zkus si zobrazit i vlastní session id pomocí session_id(); ať máš jistotu, jestli se skutečně vygenerovalo nové id. page1.php ------------- session_start(); $_SESSION['one'] = 'one'; header("Location: $server/page2.php?x=".session_id()); exit(); ------------- page2.php ------------- session_start(); var_dump($_GET); echo "Current sessionId: ".session_id()."! "; if ($_SESSION['one'] == 'one') { die("It worked."); } else { die("It did not work."); } ------------- V rychlosti 2 nápady, kde může být problém: a) Něco/někdo promazává session na serveru (ukládáš je do nestandardního umístění /home/domenacz/tmp).. to je ale docela nepravděpodobné. b) Dřív některé firewally (koncový počítač) odmítaly ukládat cookie s neomezenou platností.. ale tahle "paranoia" by dneska už taky měla být passé. Jenom drobnost na závěr, session.cookie_httponly by mělo být téměř vždycky povolené.. vypínat jenom pokud víš, co děláš :)
  3. Ještě se podívej do prohlížeče, zda tam existuje cookies s názvem PHPSESSID. Pokud tam není a id také není v URL, tak session nefunguje správně. Buď server nevytvořil PHPSESSID nebo klient toto blokuje.
  4. děje se to cca u 2 uživatelů z 5 jde o to, že si uložím že platba z gopay je true pak přesměruji a tam mimo jiné kontroluji tu session jestli je true a ono ji to vubec nevidi, ano skutečně dojde po přesměrování k novému založení relace, tedy změně phpsessid, ale nevím proč, zkoušel jsem nějaké funkce a různé jejich kombinace, podle toho co jsem vygooglil (session_regenerate_id(true); session_write_close();), ale bez výsledku...
  5. Pak bych hledal chybu někde jinde, protože kdyby byla chyba v kódu, tak by to session nevidělo ani těch zbývajících 3 uživatelů. V prvé řadě se ujistit, že ti dva měli zapnuté/povolené cookies. Pokud jo, pak se poptat, co za prohlížeč a operační systém mají. Ale popravdě kolem tohoto je to vždy na prd. Za mě to stalo tak dvakrát, kdy jsem řešil problematické session (někde fungovalo někde ne). V obou případech však šlo jen o nedobrovolné odhlašování nebo k přihlášení ani nedošlo. Už ani nevím jak se to řešilo.

← Zpět na všechna témata