Przeskocz nawigację

Często w Internecie spotykam ludzi, którzy mają pewien problem z PHP. Przeważnie brzmi on następująco:

Warning: Cannot modify header information – headers already sent by (output started at ścieżka do pliku:linia kodu) in ścieżka do pliku on line linia kodu

Gdyby go przetłumaczyć z języka angielskiego na polski to uzyskalibyśmy coś takiego:

Uwaga: Nie można zmodyfikować informacji nagłówkowych – nagłówki zostały już wysłane przez ([...]) w [...]

Można z tego wywnioskować, że skrypt wyrzuca błąd, ponieważ każesz mu zmodyfikować coś, czym już nie może dysponować – tzw. nagłówkami. Możecie spytać – a co to właściwie są te nagłówki? Według Cioci Wikipedii są to “wszelkie komendy używane do komunikacji między przeglądarką a serwerem WWW”. Mówiąc prościej – w nagłówkach zawarte są wszelkie informacje przesyłane przez serwer do przeglądarki, takie jak na przykład: język strony, typ MIME, informacje o ciasteczkach, etc.

Wracając do naszego problemu: aby mu zaradzić, należy w pewien sposób oszukać serwer i poczekać z wysłaniem nagłówków do czasu, kiedy skrypt zostanie do końca przetworzony.
Dokonamy tego, poprzez dodanie na samym początku skryptu takiej linijki kodu:


<?php
ob_start(); // void ob_start([string callback_function])
?>

Otworzy ona bufor i będzie w nim zapisywać dane dopóki nie odnajdzie jednej z komend służącej do zamknięcia go. Taką funkcją jest na przykład:


<?php
ob_end_flush(); // void ob_end_flush()
?>

Dzięki tej “sztuczce” możemy spokojnie bawić się w kodzie takimi funkcjami jak “setcookie”, “header”, czy “session_start”.

Dodaj komentarz

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Zmień )

Twitter picture

You are commenting using your Twitter account. Log Out / Zmień )

Facebook photo

You are commenting using your Facebook account. Log Out / Zmień )

Connecting to %s

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.