Chyba v Internet Explorer 7.0 s mizející session má řešení!

3. května 2007

Programování

Na nový IE 7.0 jsem zde již jednou nadával. Dnes to však bude kvůli nedostatku času kratší. Zhruba hodinu jsem u jedné své aplikace řešil problém ztracené session v otevřeném pop-up okně (potřebuji session pro výběr obrázku v FCKeditoru v jistém administračním rozhraní). Zatímco IE6, Firefox i Opera fungovaly naprosto bez problémů, IE7 stále ne a ne data ze session přečíst.

Popravdě řečeno jsem tentokráte příliš nezkoumal podstatu problému, nejdůležitější bylo chybu co nejefektivněji opravit. Přečetl jsem si, že IE7 má se sessions nějaké problémy a že je "někdy" maže při zavření pop-upu. Ne, tak tento problém zdá se není můj případ, protože i když pop-upy nefungují, v hlavním okně zůstávám přihlášen i nadále. Spíše se tedy zdá, že zatímco první otevřený pop-up z hlavního okna ještě sessions vidí (dialog Vložit / Změnit obrázek v FCKEditoru), následně otevřený další pop-up pro výběr obrázku na serveru se k sessions již zřejmě nedostane.

Řešení problému je nakonec docela jednoduché, i když na druhou stranu opruzující. Důležité je zajistit, aby se session skutečně uložila do souboru cookie, a ne pouze do paměti prohlížeče. Například takto:

session_start(); // klasické spouštění session
setcookie("PHPSESSID",session_id(),time()+1800); // uložení do cookie

K výše uvedenému řešení snad jen jedna poznámka - je třeba si uvědomit, že v tomto konkrétním řešení je nastavena platnost session na 30 minut (1800 sekund), což znamená, že nedojde k automatickému odhlášení po zavření prohlížeče! Pokud do 30 minut někdo v prohlížeči navštíví administrační stránku, bude stále přihlášen. Přestože si moc nedovedu představit reálné zneužití, je vhodné pro jistotu naučit uživatele opouštět webovou administraci nikoli zavřením prohlížeče, ale navštívením odkazu "odhlásit se".

Aktualizace 12. listopadu 2007:
V FCKeditoru byla přidána v konfiguračním souboru fckonfig.js volba PreserveSessionOnFileBrowser, která výše uvedený problém řeší dokonale a není potřeba se o nic starat.

Publikováno dne 03. 05. 2007 v kategorii Programování Odhadnutá klíčová slova BETA: explorer | session | internet | chyba | ie | vložit ip explorer | internet explorer chyba | problem | php
Mohlo by Vás zajímat BETA: CPU 100%, nefunkční klávesnice a touchpad

O kategorii Programování

V nejodbornější kategorii tohoto blogu jsou zařazeny články s mými programátorskými zkušenostmi získanými několikaletou praxí tvorby stránek a java aplikací pro mobilní telefony.

Komentáře k článku

RH - [email schován] (dne 01. 03. 2009 v 15.54)
Povedal by som ze "problem" je u popup okien u IE v niecom inom.Mam IE 6.0 a prejavil sa ten problem, ze ked otvorim Popup okno naviazany na vyhodnocovaci skript v PHP po session_start() z nepochopitelnych dovodov poda IE podnet k vytvoreniu novej relacie a kedze to testujem lokalne je skutocne vidiet ze PHP vytvori na strane serveru nove SID(relaciu) akoby som otvoril novy prehliadac a prihlasil sa znova.Je to uplna blbost a to vypoveda o neschopnosti Microsoftu doladit IE.Vsetky ostatne prehliadace ktore som doteraz skusal sa spravaju korektne!Obidenie tohoto problemu spociva v tom ze Popup oknu resp,jeho skriptu treba prostrednictvom parametru GET preposlat SID cislo hlavneho okna niecim takymto
<?php echo "xxx.php?SID=".session_id(); ?>
Interpreter PHP si potom to SID prebere automaticky a _SESSION bude tu premennu vidiet kdekolvek kedze session_start() si v takomto pripade kod prevezme z parametru SID v GET a otvori tu spravnu relaciu.

Přidat vlastní komentář:
Jméno:
E-mail:
Sledovat diskusi:
Web:
Kontrolní kód:

Komentáře jsou v prvé řadě určeny ke kladení dotazů k tématu, upozornění na chybu, rozšíření obsahu článku a vůbec ke zpětné reakci na obsah těchto stránek. Mé reakce jsou barevně odlišeny.

V současné době není umožněno vkládat HTML tagy - pokud vložíte HTML kód, bude převeden na entity. K Vašemu komentáři se do databáze uloží čas vložení a Vaše aktuální IP adresa (54.227.48.147). IP adresa se nebude zobrazovat čtenářům, nicméně v případě, že bude Váš odkaz shledán právně závadným, může být Vaše IP adresa předána příslušným státním orgánům. Emailové adresy jsou ochráněny před běžnými spam roboty.

© Marek Demčák 2007 - 2018
Všechna práva dle Autorského zákona (č. 121/2000 Sb.) vyhrazena.