توابع 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 یا بالاتر، میتوان این باگ را حل کرد.