Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: headers already sent
Forum PHP.pl > Forum > PHP
smiady
Witam.

Mam taki problem. W systemie często będę korzystać z try catch:
  1. try {
  2. throw new Exception('Testowy błąd', 0);
  3. } catch(Exception $e) {
  4. Klasa::metoda($e);
  5. }

Podana metoda zapisuje do bazy danych informacje o błędzie(jaka strona, która linijka, typ błędu itd).
Następnie chce, aby pokazała się strona błędu header('Location: error.php').
Generalnie jak mam try catch, który obejmuje całą zawartość kodu w pliku to jest ok, ale w przypadku
gdy przed try coś występuje np echo 'x'; no to jest problem, bo wyskoczy wiadomy przez większość błąd:
headers already sent ...
Jest na to jakieś rozwiązanie czy ograniczyć się tylko do komunikatu typu echo $e->getMessage questionmark.gif?

Znalazłem rozwiązanie, które działa w pliku php.ini output buffering zmienić na On - tylko pytanie jakie inne konsekwencje
ta zmiana będzie miała na mój system oprócz tej jednej pozytywnej ?
sazian
zainteresuj się "widokami" (v w modelu mvc) czyli systemami szablonów,
najpierw tworzysz wszystko co ma być wyświetlone, upychasz to w widoku, a dopiero w ostatnim kroku to wyświetlasz. Przy takim rozwiązaniu header zawsze będzie wywoływany przed wyświetleniem widoku
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.