PHPдегин HTTP жооп баш тамгалары менен болгон маселе
HTTP эрежелери боюнча, алгач HTTP баш тамгалары жөнөтүлөт,
андан кийин HTTP жообунун денеси.
Бул себептен, PHPдеги header функциясы менен
иштөө өзгөчөлүктөргө ээ.
Маселе мында, эгерде бул функцияны чакырганга чейин
экранга кандайдыр бир чыгаруу болсо,
ал жооптун денесинин башы катары чечмеленет.
Бул учурда header функциясын
чакыруу headers already sent деген текст менен
PHPдин эскертүүсүнө алып келет.
Бул учурда баш тамгалар жиберилиши мүмкүн.
Жана ката да чыкпашы мүмкүн (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>