Мушкилот бо сарлавҳаҳои ҷавоби HTTP дар PHP
Мувофиқи қоидаҳои HTTP, аввал сарлавҳаҳои
HTTP фиристода мешаванд, ва баъд тани ҷавоби HTTP.
Аз ин рӯ, кор бо функсияи header
дар PHP хусусиятҳои худро дорад.
Масъала ин аст, ки ақаллан пеш аз фарохони ин
функсия чизе ба экран чоп шавад,
он ҳамчун оғози тани ҷавоб шуморида мешавад.
Дар ин ҳолат, фарохонӣ кардани функсияи
header боиси
ҳушдордиҳии PHP бо матни
headers already sent (сарлавҳаҳо аллакай фиристода шудаанд) мегардад.
Дар ин вақт сарлавҳаҳо ҳатто фиристода шаванд.
Ҳатто хатогии ҳам набошад (аз танзимоти PHP вобаста аст).
Аммо аксар вақт ин танҳо дар локал (нишасти маҳаллӣ) рух медиҳад,
ва вақте ки вебсайт ба интернет бор карда мешавад,
ҳама чиз хароб мешавад.
Чоп ба экран ҳар як матнро дар бар мегирад. Масалан, ин тавр:
матн
<?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>
матн
<body>
<html>