Co takiego oznacza ten komunikat i jak sobie z nim poradzić?
Thank you for reading this post, don't forget to subscribe!“Cannot modify header information – headers already sent by” – oznacza, że jak sam komunikat wskazuje – nie można zmodyfikować nagłówków dla danej strony za pomocą PHP. Powodem tej sytuacji jest to, że przed przekierowaniem header
wyslaliśmy juz jakies informacje:
Przykładowy kok generujący taki błąd:
//zmienna string zawiera dowolny kod html (nawet moze to być spacja!) echo $string; //Przykład nagłówka, który przeniesie nas na inną stoną header( 'Location: http://jakisadres.pl' ); ?>
Rozwiązanie
Dla szybkiego rozwiązania tego problemu dodajemy do pliku w którym umieszczamy przekierowanie header
funkcje buforowania ob_start() i ob_end_flush()
Przykład rozwiązania:
ob_start(); // początek pliku //zmienna string zawiera dowolny kod html (nawet moze to być spacja!) echo $string; //Przykład nagłówka, który przeniesie nas na inną stoną header( 'Location: http://jakisadres.pl' ); ob_end_flush(); // koniec pliku ?>
Teraz na stronie nie powinien wygenerować się nam żaden błąd związany z wysyłaniem nagłówków. PHP zbiera wszystkie dane i wysyła je razem zanim przeglądarka zacznie interpretować kod HTML strony.