دالة PHP header()
التعريف والاستخدام
تسلم دالة header() العناوين الرأسية HTTP الأصلية إلى العميل.
من المهم التأكيد على أنه يجب دعوة دالة header() قبل إرسال أي مخرجات حقيقية (في إصدارات PHP 4 وأعلى، يمكنك استخدام حجب المخرجات لحل هذه المشكلة):
<html> <?php // تحدث أخطاء في النتائج // تم إرسال مخرجات مسبقًا قبل دعوة header() header('Location: http://www.example.com/'); ?>
القواعد
header(string,replace,http_response_code)
المتغيرات | الوصف |
---|---|
string | مطلوب. يحدد سلسلة العناوين الرأسية التي سيتم إرسالها. |
replace |
اختياري. يشير إلى ما إذا كان يجب استبدال العنوان الرأسي السابق أو إضافة عنوان رأس ثاني. الافتراض هو true (البديل). false (يسمح بعدة عناوين رأس من نفس النوع). |
http_response_code | اختياري. قم بفرض رمز استجابة HTTP المحدد. (متاح في PHP 4 وكل الإصدارات الأحدث) |
提示和注释
注释:从 PHP 4.4 之后,该函数防止一次发送多个报头。这是对头部注入攻击的保护措施。
实例
例子 1
<?php // Date in the past 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 存在一个阻止以上机制的 bug。通过升级为 Service Pack 2 或更高的版本,可以解决该 bug。