توابع header() PHP

تعریف و استفاده

توابع header() سرسره‌های اصلی HTTP را به کاربر ارسال می‌کند.

این نکته مهم است که باید قبل از ارسال هر خروجی واقعی، تابع header() فراخوانی شود (در نسخه‌های PHP 4 و بالاتر، می‌توانید از ذخیره خروجی برای حل این مشکل استفاده کنید):

<html>
<?php
// نتیجه اشتباه است
// در حالی که از قبل خروجی وجود دارد، header() فراخوانی می‌شود
header('Location: http://www.example.com/');
?>

قانون‌گذاری

header(string,replace,http_response_code)
پارامتر توضیح
string ضروری. مشخص می‌کند که کدام سرسره باید ارسال شود.
replace

اختیاری. نشان می‌دهد سرسره آیا جایگزین سرسره قبلی است یا سرسره دوم اضافه می‌شود.

مُقترح بکریپشن (مقابل). فالسی (مجوز چندین سرسره مشابه).

http_response_code اختیاری. کد ردیف HTTP را به مقدار مشخص شده مجبور کنید. (در PHP 4 و نسخه‌های بالاتر قابل استفاده است)}

توضیحات و نکات

نکته:از PHP 4.4 به بعد، این فنکشن از ارسال چندین سربرگ در یک بار جلوگیری می‌کند. این یک اقدام برای حفاظت از حملات سربرگ است.

مثال

مثال 1

<?php
// تاریخ در گذشته
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

?>
<html>
<body>
...
...

نکته:کاربر ممکن است تنظیماتی را برای تغییر تنظیمات پیش‌فرض مرورگر خود تنظیم کند. با ارسال سربرگ‌های بالا، می‌توانید هر یک از این تنظیمات را برطرف کنید و مرورگر را مجبور به استفاده از سرور نکند!

مثال 2

به کاربران اطلاع دهید که یک فایل PDF تولید شده را ذخیره کنند (سربرگ Content-Disposition برای ارائه یک نام پیشنهادی فایل و اجبار به نمایش پنجره ذخیره‌سازی توسط مرورگر استفاده می‌شود):

<?php
header("Content-type:application/pdf");
// فایل به عنوان downloaded.pdf نامیده خواهد شد
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// منبع PDF در original.pdf است
readfile("original.pdf");
?>
<html>
<body>
...
...

نکته:مایکروسافت IE 5.5 یک باگ وجود دارد که مکانیزم‌های بالا را مسدود می‌کند. با ارتقاء به نسخه Service Pack 2 یا بالاتر، می‌توان این باگ را حل کرد.