Autor Zpráva
Messy84
Profil
Zdravím,
mám dotaz ohledně přesměrování stránek v případě nesplnění podmínky.
V současnosti používám pro přesměrování stránky na stránky s chybami:
if ($chyba_zadani == 1){
    header("location:alarm_page.php?alarm=24&id=11");
}
v localhostu mi to funguje, bohužel při nahrání na webhosting dostanu při použití tohoto přesměrování chybu: Cannot modify header information - headers already sent by...
hlavička je už uzavřená (v případě že přesměrování zadám před HEAD přseměrování funguje, ale to je u mě nepoužitelné)

1) je možné přesměrovat nějakou jinou metodou, která by fungovala?
2) je možné přesnastavit webhosting, aby fungoval stejně jako u mě nastavený localhost (používám savana web hosting)
Tori
Profil
1) javascriptem, ale části uživatelů to fungovat nebude. Pokud by ještě nebyla ukončená HTML hlavička, dá se přesměrovávat i tagem <meta> (pokud to má nějaká omezení, bude jich určitě míň než u JS). Obě metody ale AFAIK umožní, aby se dalo klikáním na "Zpět" dostat znova na zpracování formuláře (a tedy opakovaně odeslat stejná data).
2) nevím, ale ještě jsou jednodušší možnosti:
3) psát tak, aby přesměrování fungovalo i bez úprav serveru - totiž ukládat všechen výstup do nějaké proměnné a vypsat ho až na konci skriptu. Dost si to usnadníte, když začnete používat nějaký šablonový systém (např. Smarty, Latte, ...).
4) upravit existující skript, aby se výstup každého echo ukládal někde stranou a vypsat ho až na konci - na úplném začátku skriptu zavoláte ob_start(), na úplném konci skriptu zavoláte ob_end_flush().
jenikkozak
Profil
Tori:
Pokud by ještě nebyla ukončená HTML hlavička, dá se přesměrovávat i tagem <meta>
Prohlížeče jsou v tomto směru tolerantní, takže se dá <meta http-equiv="refresh" použít i mimo hlavičku. Jak se na takové umístění dívají třeba vyhledavače, nevím, ale to by v tomto případě zřejmě nebyl problém.

Mělo by stačit na serveru navýšit output_buffering, který se dá nastavit všude kromě skriptu. Do jisté míry to ale sníží přenositelnost aplikace.
Messy84
Profil
Děkuji za pomoc, zvolil jsem volbu 4 a vše šlape jak má...zase jsem aspon o neco chytřejší

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: