PHP-da HTTP jogap sözbaşlary bilen bolýan problema

HTTP düzgünlerine görä, ilki HTTP sözbaşlary iberilýär, soňra bolsa HTTP jogapynyň gövnesi. Şonuň üçin PHP-de header funksiýasy bilen işleýänlikde aýratynlyklar bar.

Mesele şonda, eger bu funksiýa çagyrylmazdan ozal ekrana käbir çykyş bolsa, ol jogap gövnesiniň başlangyjy hökmünde kabul ediler. Bu ýagdaýda header funksiýasyny çagyrmak headers already sent diýen tekst bilen PHP duýduryşyna sebäp bolýar. Bu ýagdaýda sözbaşlar belki-de iberiler. Hata-da çykmaýan bolup biler (PHP sazlamalaryna bagly). Ýöne köplenç bu diňe lokal serwerde bolup, saýt internete goýlanda hemmesi bozular.

Ekrana çykyş diýip, islendik tekst düşünilýär. Mysal üçin, şeýle:

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

Ýa-da boş setir:

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

Ýa-da boşluk:

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

Ýa-da teg:

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

Ýa-da echo arkaly çykyş:

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

Ýa-da var_dump arkaly çykyş:

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

Hatta PHP duýduryşlary hem ekrana çykyş bolup biler. Aşakdaky mysalda maksatly suratda ýok üýtgeýjä ýüzlenilýär, bu bolsa duýduryşyň çykmagyna getirer:

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

PHP bracketleriniň aralaryndaky boşluklar hem ekrana çykyş döredýär:

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

Maksatly suratda header funksiýasyndan ozal ekrana çykyş dörediň. Ýüze çykýan hatanyň tekstini öwreniň.

Задание 2

Bu kodda edilen ýalňyşlygy düzediň:

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