Autor Zpráva
Milan1236000
Profil
Jde o to, že mám stránku, kde si registrovaný uživatel upravuje údaje a po změně by se měl zobrazit dialog, že se změna provedla.
Na konci kontrolovacího cyklu, zda jsou údaje vyplněny správně, je tato část:
$_SESSION['udaje_zmeneny']=1;
header("Location: /hhh/uzivatele?uzivatel={$_GET['uzivatel']}");

A na přesměrované stránce je pak:
if(isset($_SESSION['udaje_zmeneny']) and $_SESSION['udaje_zmeneny']==1)
{
  echo "<div>Údaje změněny</div><br>";
  unset($_SESSION['udaje_zmeneny']);
} 

Tady právě mě dost zaráží jedna věc. Podle mě by se to takto mělo normálně bez problému zobrazit (jen jednou), ale nezobrazí se to vůbec.
Když ale zakomentuju zvýrazněnou část, tak se dialog zobrazí, ale zůstane tam při každém načtení stránky.

Fakt mi to přijde divné... Co je tam špatně? Verze PHP je 5.5.12, ale to by na to vliv mít nemělo (snad).
MartinP
Profil *
Za ten header() musíš dát exit(), aby se nevykonával zbytek scriptu pod tím.
Milan1236000
Profil
MartinP:
Super, už to jde. Díky moc. ;)
Stejně mě ale zaráží proč tomu tak je. Přece se to přesměruje, takže se už ten zbytek nevykoná, ne? Vykonají se až ty skripty na přesměrované stránce.
Davex
Profil
Milan1236000:
Skript se vykonává na serveru a přesměrování v prohlížeči. Ty pouze funkcí header() říkáš, že bys rád prohlížeči odeslal nějakou hlavičku, která se k němu třeba vůbec nemusí dostat a nebo nemusí k přesměrování vůbec dojít. Pokud je v PHP nebo na webserveru zapnuté bufferování, tak se většinou začne něco odesílat prohlížeči až po skončení skriptu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: