Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> HEADER po wysłaniu do przeglądarki
miki22
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 2
Dołączył: 2.03.2012

Ostrzeżenie: (0%)
-----


Stworzyłem na stronie system obsługi błędów oparty na set_error_handler(). Niektóre błędy (dokładnie Fatal errors) chciałbym by były przekierowanie na specjalną stronę, która o tym informuje zamiast wyświetlania się pustej białej strony z komunikatem błedu.
  1. function ObslugaBlad( $bl_nr , $bl_opis , $bl_plik , $bl_linia , $bl_zmn )
  2. {
  3. // tutaj jakiś kod który sprawdza jaki rodzaj błedu, zapisuje log błedu itp. itd.
  4.  
  5. if ($bl_nr == E_ERROR || $bl_nr == E_PARSE || itd )
  6. {
  7. header("location: err/blad_wew.php");
  8. exit();
  9. }
  10. }
  11.  
  12. set_error_handler('ObslugaBlad');

I tu powstaje problem. Mimo że zawsze staram się oddzielić php od html i ten ostatni jest wysyłany na samym końcu skryptu to jednak w tej specyficznej sytuacji (obsługi błedów) może się zdażyć że to przekierowanie będzie wykonywane kiedy już coś zostało wysłane do przeglądarki.
Zastosowałem mały wybieg i dodałem po header linijkę:
  1. header("location: err/blad_wew.php");
  2. echo '<META HTTP-EQUIV="REFRESH" CONTENT="0; URL=err/blad_wew.php">';
  3. exit();

Wszystko działa. W momencie kiedy nic do przeglądarki nie było wysyłane header zadziała. Gdy przeciwnie, to skrypt generuje ostrzeżenie (a niech sobie robi) i dzięki nowej linijce i tak przechodzi tam gdzie trzeba.
Zadziwiła mnie inna rzecz. Gdy skrypt testuję na moim domowym serwerze do testów, to header działa bez względu czy coś było czy nie było wysyłane do przeglądarki! (zawsze czytałem że to niemożliwe bez buforowania). Na serwerze, gdzie ta strona ma wisieć, niestety go nie wykonuje. Czyli zależy to od konfiguracji php ma serwerze (?).
Czy ktoś z szanownego grona wie jak to się konfiguruje? Czy to zależy od wersji PHP? (na domowym mam 5.4.27 a na docelowym 5.3), czy to jest włączone jakieś buforowanie?

Ten post edytował miki22 26.09.2014, 18:00:59
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:02