Księgowość internetowa wFirma 80% taniej dla czytelników WebInsider.pl

Dziś będzie relatywnie krótki wpis – ale jak to często bywa, życie samo podrzuciło temat. Wczoraj konsultowałem pewien projekt, w którym „relatywnie nieistotny” fragment realizowany jest w PHP, i akurat pojawił się malutki problem (oczywiście nie przypadkowo – został niejako „sprowokowany” w trakcie analizowania dostępnych możliwości/rozwiązań ;-)), zapewne znany każdemu kto miał trochę więcej (choć niekoniecznie) do czynienia z PHP, czyli „Cannot modify header information”.

PHP i „Cannot modify header information”

Błąd pojawi się np. przy próbie ponownego wysłanie nagłówka (i/lub utworzenie ciasteczka (cookies)):

Cannot modify header information – headers already sent by…

W naszym przypadku było to polecenie przeładowania/przekierowania strony:

<?php header('Location: [ADRES URL]'); ?>

Sam kod jak i metoda przekierowania w PHP jest OK, ale akurat użyta w tym konkretnym momencie skutkowała takim właśnie błędem.

ob_start() i ob_end_flush()

Chyba najprostszym rozwiązaniem jest skorzystanie z 2 standardowych funkcji dostępnych w PHP, czyli:

  • ob_start()
  • ob_end_flush()

Pierwsza funkcja rozpoczyna zbieranie danych które mają być wysłane do przeglądarki (m.in. jako nagłówek), druga – co wydaje się oczywiste – kończy zbieranie i dopiero w tym momencie następuje przesłanie danych.

Całość może wyglądać np. tak:

<?php
ob_start();

[...]

if ( [WARUNEK] ) {  header('Location: [ADRES URL]); }

[...]

ob_end_flush();
?>

Oczywiście już bez błędu…

(!) Zgłoś błąd na stronie
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Roztańczona Karolina dzięki motywowi Divi od Elegant Themes właśnie skończyła pierwszą stronę
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Na WebInsider.pl korzystamy z motywu Extra od Elegant Themes. Zobacz dlaczego...