[ Milan Kragujevic @ 20.09.2013. 07:45 ] @
Naslov je čudan, ali kao i uvek, nisam najbolji kad su naslovi u pitanju.
U osnovi, do sada sam, kao i većina ostalih programera, pisao poruke o greškama u aplikaciji ili kroz PHP built-in error reporter ili sa jednostavnim die();, a na komplikovanijim aplikacijama sa gomilom try { } catch { } blokova i bacanjem exceptions.
Međutim zanima me kako da realizujem da se kod greške obustavi prikaz stranice, cela strana obriše i prikaže nova. Naravno to se sve dešava dok strana ne stigne do brauzera. Kao što die() ili exit stopiraju izvršavanje skripte, meni treba da obrišem celu stranu i izbacim novu kada se desi greška kako bi imao lepše stranice sa porukama o grešci, osim toga često se desi da je greška negde između html koda pa se onda i ne prikaže kako treba ili se ne vidi uopšte jer je obuhvaćena navodnicima.
[ Tpojka @ 20.09.2013. 08:47 ] @
Code (php):
<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>
 

Referenca.

edit: Još jedan primjer.
[ Nemke_BG @ 20.09.2013. 13:49 ] @
1. Tako sto ces da izvrsis separaciju koda od HTML-a
2. Koristi ob_start() da bufferujes izlaz
3. Koristi register_shutdown() jer moze da uhvati neke fatalke koje try() catch() ne mogu.
[ Milan Kragujevic @ 20.09.2013. 22:13 ] @
Citat:
Tpojka
Code (php):
<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>
 

Referenca.

edit: Još jedan primjer.

Znam za Header i ne treba mi.

Citat:
Nemke_BG: 1. Tako sto ces da izvrsis separaciju koda od HTML-a
2. Koristi ob_start() da bufferujes izlaz
3. Koristi register_shutdown() jer moze da uhvati neke fatalke koje try() catch() ne mogu.

Hm, što se tiče odvajanja HTML od programske logike, to maksimalno radim, međutim dešava se da se greške dese unutar koda. ob_start i ob_end_clear/ob_end_flush deluju zanimljivo, probaću tu metodu.
[ Milan Kragujevic @ 21.09.2013. 12:03 ] @
Probao sam, radi. Mada je komplikovanije nego što sam očekivao, output buffering metoda radi. Hvala
[ Nemke_BG @ 21.09.2013. 16:40 ] @
Obrati paznju samo na to kolika je unapred definisana velicina buffer-a, jer ako se dobro secam, kad se bafer popuni automatski ga PHP prazni tako sto salje taj deo napolje i nastavlja izvrsavanje. Ovo obicno nije problem jer retko koja strana je toliko velika ali za svaki slucaj ipak proveri to.