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:
tekst
<?php
header('Content-Type: text/html');
?>
Ýa-da boş setir:
<?php
header('Content-Type: text/html');
?>
Ýa-da boşluk:
<?php
header('Content-Type: text/html');
?>
Ýa-da teg:
<div>
<?php
header('Content-Type: text/html');
?>
</div>
Ýa-da echo arkaly çykyş:
<?php
echo 'abc';
header('Content-Type: text/html');
?>
Ýa-da var_dump arkaly çykyş:
<?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
$text += 1;
header('Content-Type: text/html');
?>
PHP bracketleriniň aralaryndaky boşluklar hem ekrana çykyş döredýär:
<?php
echo 'abc';
?>
<?php
header('Content-Type: text/html');
?>
Maksatly suratda header funksiýasyndan ozal
ekrana çykyş dörediň.
Ýüze çykýan hatanyň tekstini öwreniň.
Bu kodda edilen ýalňyşlygy düzediň:
<!DOCTYPE html>
<html>
<head>
<?php
header('Content-Type: text/html');
?>
</head>
<body>
tekst
<body>
<html>