Мушкилот бо сарлавҳаҳои ҷавоби HTTP дар PHP

Мувофиқи қоидаҳои HTTP, аввал сарлавҳаҳои HTTP фиристода мешаванд, ва баъд тани ҷавоби HTTP. Аз ин рӯ, кор бо функсияи header дар PHP хусусиятҳои худро дорад.

Масъала ин аст, ки ақаллан пеш аз фарохони ин функсия чизе ба экран чоп шавад, он ҳамчун оғози тани ҷавоб шуморида мешавад. Дар ин ҳолат, фарохонӣ кардани функсияи header боиси ҳушдордиҳии PHP бо матни headers already sent (сарлавҳаҳо аллакай фиристода шудаанд) мегардад. Дар ин вақт сарлавҳаҳо ҳатто фиристода шаванд. Ҳатто хатогии ҳам набошад (аз танзимоти PHP вобаста аст). Аммо аксар вақт ин танҳо дар локал (нишасти маҳаллӣ) рух медиҳад, ва вақте ки вебсайт ба интернет бор карда мешавад, ҳама чиз хароб мешавад.

Чоп ба экран ҳар як матнро дар бар мегирад. Масалан, ин тавр:

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

Ё сатри холӣ:

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

Ё фосила:

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

Ё тег:

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

Ё чоп тавассути echo:

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

Ё чоп тавассути var_dump:

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

Ҳатто огоҳиҳои PHP низ чоп ба экран хоҳанд буд. Дар мисоли оянда амалан ба тағирёбандаи мавҷуднабуда муроҷиат карда мешавад, ки боиси чопи огоҳӣ мегардад:

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

Кушодани ва бастани қавсҳои PHP низ боиси чоп ба экран мешавад:

php<?php
  echo 'abc';
?>
<?php
  header('Content-Type: text/html');
?>
Задание 1

Амалан пеш аз функсияи header чоп ба экран эҷод кунед. Матни хатогие, ки пайдо мешавад, омӯзед.

Задание 2

Хатогиеро, ки дар ин рамз ирод карда шудааст, ислоҳ кунед:

html<!DOCTYPE html>
<html>
  <head>
    <?php
      header('Content-Type: text/html');
    ?>
  </head>
  <body>
    матн
  <body>
<html>