<อ้างอิง PHP HTTP สมบูรณ์
ความหมายและการใช้งาน
header() ฟังก์ชั่นส่งหัว HTTP ดิบไปยังลูกค้า
มันเป็นสิ่งสำคัญที่จะสังเกตเห็นว่า header() ต้องเรียกว่าก่อนที่จะส่งออกที่เกิดขึ้นจริงใด ๆ จะถูกส่ง (ใน PHP 4 และต่อมาคุณสามารถใช้บัฟเฟอร์การส่งออกที่จะแก้ปัญหานี้):
<html>
<?php
// This results in an error.
// The output above is before the header() call
header('Location: http://www.example.com/');
?>
วากยสัมพันธ์
header(string,replace,http_response_code)
พารามิเตอร์ | ลักษณะ |
---|---|
string | จำเป็นต้องใช้ ระบุสตริงส่วนหัวที่จะส่ง |
replace | ไม่จำเป็น. ที่บ่งบอกว่าส่วนหัวควรเปลี่ยนก่อนหน้านี้หรือเพิ่มส่วนหัวที่สอง เริ่มต้นคือ TRUE (will replace) FALSE (allows multiple headers of the same type) |
http_response_code | ไม่จำเป็น. บังคับให้รหัสการตอบสนอง HTTP เพื่อค่าที่ระบุ (available in PHP 4.3 and higher) |
เคล็ดลับและคำอธิบาย
Note: เนื่องจาก 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>
...
...
Note: มีตัวเลือกที่ผู้ใช้อาจตั้งค่าการเปลี่ยนแปลงการตั้งค่าเริ่มต้นแคชเบราว์เซอร์ที่มี โดยการส่งหัวข้างต้นคุณควรแทนที่การตั้งค่าเหล่านั้นและบังคับให้เบราว์เซอร์ที่จะไม่แคช!
ตัวอย่างที่ 2
ขอให้ผู้ใช้รับแจ้งให้บันทึกไฟล์ PDF ที่สร้าง (หัว Disposition เนื้อหาที่ใช้ในการจัดหาชื่อไฟล์แนะนำและบังคับให้เบราว์เซอร์เพื่อแสดงการบันทึกกล่องโต้ตอบ):
<?php
header("Content-type:application/pdf");
// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// The PDF source is in original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...
Note: มีข้อผิดพลาดใน Microsoft IE 5.5 ที่ช่วยป้องกันการนี้จากการทำงานคือ ข้อผิดพลาดสามารถแก้ไขได้โดยการอัพเกรดเป็น Service Pack 2 หรือในภายหลัง
<อ้างอิง PHP HTTP สมบูรณ์