⊗ppPmHpRHP 400 of 447 menu

Проблем с заглавките на HTTP отговори в PHP

По правилата на HTTP първо се изпращат HTTP заглавки, а след това тялото на HTTP отговора. Поради това работата с функцията header в PHP има своите особености.

Работата е там, че ако преди извикването на тази функция има някакъв изход на екрана, той ще се тълкува като начало на тялото на отговора. В този случай извикването на функцията header ще доведе до предупреждение в PHP с текст headers already sent. В този случай заглавките може дори да бъдат изпратени. Може дори и грешката да не се изведе (зависи от настройките на PHP). Но най-често това ще се случва само на локалната машина, а при качване на сайта в интернет всичко ще се счупи.

Под изход на екрана се разбира какъвто и да е текст. Например, така:

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

Или празен ред:

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

Или интервал:

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

Или таг:

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

Или изход чрез echo:

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

Или изход чрез var_dump:

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

Дори предупрежденията от PHP ще бъдат изходи на екрана. В следващия пример нарочно се осъществява достъп до несъществуваща променлива, което ще доведе до извеждане на предупреждение:

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

Празните редове между PHP скобите също генерират изход на екрана:

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

Създайте нарочно изход на екрана преди функцията header. Проучете текста на възникващата грешка.

Поправете грешката, допусната в този код:

<!DOCTYPE html> <html> <head> <?php header('Content-Type: text/html'); ?> </head> <body> text <body> <html>
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне