Hàm header() trong PHP

Định nghĩa và cách sử dụng

Hàm header() gửi các đầu báo HTTP nguyên bản đến client.

Nhận ra rằng rất quan trọng, rằng bạn phải gọi hàm header() trước khi gửi bất kỳ đầu ra thực tế nào (trong PHP 4 và các phiên bản cao hơn, bạn có thể sử dụng bộ nhớ đệm đầu ra để giải quyết vấn đề này):

<html>
<?php
// Kết quả lỗi
// Đã có đầu ra trước khi gọi header()
header('Location: http://www.example.com/');
?>

Ngữ pháp

header(string,replace,http_response_code)
参數 Mô tả
string Bắt buộc. Quy định chuỗi đầu báo cần gửi.
replace

Tùy chọn. Chỉ định đầu báo này có thay thế đầu báo trước đó hay thêm đầu báo thứ hai.

Mặc định là true (thay thế). false (cho phép nhiều đầu báo cùng loại).

http_response_code Tùy chọn. Buộc mã phản hồi HTTP thành giá trị cụ thể đã chỉ định. (Dùng được từ PHP 4 và các phiên bản cao hơn)

Hướng dẫn và ghi chú

Ghi chú:Từ PHP 4.4 trở đi, hàm này ngăn chặn việc gửi nhiều header cùng một lúc. Đây là biện pháp bảo vệ chống lại cuộc tấn công chèn đầu.

Mô hình

Ví dụ 1

<?php
// Ngày trong quá khứ
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

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

Ghi chú:Người dùng có thể thiết lập một số tùy chọn để thay đổi cài đặt bộ nhớ cache mặc định của trình duyệt. Bằng cách gửi các header trên, bạn có thể thay thế bất kỳ cài đặt nào đó, buộc trình duyệt không thực hiện bộ nhớ cache!

Ví dụ 2

Hướng dẫn người dùng lưu tệp PDF đã tạo (Content-Disposition header được sử dụng để cung cấp một tên tệp đề xuất và buộc trình duyệt hiển thị hộp thoại lưu trữ):

<?php
header("Content-type:application/pdf");
// Tệp sẽ được gọi là downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// Nguồn PDF trong original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...

Ghi chú:Microsoft IE 5.5 có một lỗ hổng bug ngăn chặn cơ chế trên. Bằng cách nâng cấp lên Service Pack 2 hoặc phiên bản cao hơn, bạn có thể giải quyết lỗi này.