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.