آیا هدرها ارسال شده اند؟ (headers_sent)
تابع headers_sent() می گوید هدرها فرستاده شده اند یا نه. «هدر (Header)» اطلاعات اضافه پاسخ است؛ مثل نوع فایل. کلمه کانونی: headers_sent در PHP.
تعریف و کاربرد
headers_sent() بررسی می کند هدرها ارسال شده اند یا نه. همچنین می تواند بگوید خروجی از کدام فایل و خط شروع شد. اگر هنوز ارسال نشده اند، می توانی هدر جدید بفرستی.
نمونه پایه
<?php
if (!headers_sent()) {
header("Location: https://www.w3schools.com/");
exit;
}
?>
دریافت محل شروع خروجی
با پارامترهای اختیاری، نام فایل و شماره خط را بگیر. سپس تصمیم بگیر ریدایرکت انجام دهی یا پیام خطا بدهی.
<?php
// $file و $line را مقداردهی نکن.
if (!headers_sent($file, $line)) {
header("Location: https://www.w3schools.com/");
exit;
} else {
echo "Headers sent in $file on line $line";
exit;
}
?>
گام های سریع تمرین
- قبل از هر خروجی، headers_sent را چک کن.
- اگر FALSE بود، با header() هدر بفرست.
- برای فهرست هدرها از headers_list() کمک بگیر.
- اگر لازم شد، با header_remove() هدر را حذف کن.
نکات مهم headers_sent در PHP
- بعد از شروع خروجی، تغییر هدر ممکن نیست.
- خروجی های مخفی مثل BOM هم مشکل ساز می شوند.
- همیشه اول منطق هدر را اجرا کن.
جمع بندی سریع
- headers_sent وضعیت ارسال هدرها را می گوید.
- می توانی فایل و خط شروع خروجی را بگیری.
- هدرها را قبل از هر echo تنظیم کن.
- برای مدیریت هدرها از header و header_remove استفاده کن.