⊗ppPmHpRHP 400 of 447 menu

Problem z nagłówkami odpowiedzi HTTP w PHP

Zgodnie z zasadami HTTP najpierw wysyłane są nagłówki HTTP, a potem ciało odpowiedzi HTTP. Z tego powodu praca z funkcją header w PHP ma swoje specyficzne cechy.

Chodzi o to, że jeśli przed wywołaniem tej funkcji nastąpi jakieś wyjście na ekran, będzie ono traktowane jako początek ciała odpowiedzi. W tym przypadku wywołanie funkcji header doprowadzi do ostrzeżenia PHP z tekstem headers already sent. W tym przypadku nagłówki mogą nawet zostać wysłane. Może nawet błąd nie zostanie wyświetlony (zależy to od ustawień PHP). Ale najczęściej będzie to tylko na lokalnym serwerze, a po opublikowaniu strony w internecie wszystko się zepsuje.

Przez wyjście na ekran rozumie się dowolny tekst. Na przykład tak:

text <?php header('Content-Type: text/html'); ?>

Lub pusty wiersz:

<?php header('Content-Type: text/html'); ?>

Lub spacja:

<?php header('Content-Type: text/html'); ?>

Lub tag:

<div> <?php header('Content-Type: text/html'); ?> </div>

Lub wyjście przez echo:

<?php echo 'abc'; header('Content-Type: text/html'); ?>

Lub wyjście przez var_dump:

<?php $str = 'abc'; var_dump($str); header('Content-Type: text/html'); ?>

Nawet ostrzeżenia PHP będą wyjściami na ekran. W następnym przykładzie celowo następuje odwołanie do nieistniejącej zmiennej, co doprowadzi do wyjścia ostrzeżenia:

<?php $text += 1; header('Content-Type: text/html'); ?>

Przerwania nawiasów PHP również generują wyjście na ekran:

<?php echo 'abc'; ?> <?php header('Content-Type: text/html'); ?>

Celowo stwórz wyjście na ekran przed funkcją header. Przeanalizuj tekst powstałego błędu.

Popraw błąd popełniony w tym kodzie:

<!DOCTYPE html> <html> <head> <?php header('Content-Type: text/html'); ?> </head> <body> text <body> <html>
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć