Hàm header() PHP sử dụng như thế nào ?

Hàm header() là một hàm được tích hợp sẵn trong ngôn ngữ lập trình PHP. Nó được sử dụng để gửi các tiêu đề HTTP tới máy khách hoặc trình duyệt của người dùng. Một điểm quan trọng cần lưu ý về hàm header() là nó phải được gọi trước khi gửi bất kỳ đầu ra thực tế nào.

Lập Trình Viên mời bạn cùng tham khảo chi tiết nội dung bên dưới. Bài viết này nằm trong chuyên đề hướng dẫn PHP từ cơ bản đến nâng cao tại dự án Phát Triển Website.

Hàm này gửi một tiêu đề HTTP dưới dạng raw tới máy khách hoặc trình duyệt. Trước khi gửi bất kỳ đầu ra khác, các chức năng HTTP sẽ thay đổi thông tin được gửi bởi máy chủ web cho máy khách hoặc trình duyệt.

Hàm header() PHP Là gì

Hàm header() PHP là một hàm để gửi tiêu đề HTTP tới máy khách hoặc trình duyệt. Nó được sử dụng để thay đổi nội dung và thông tin tiêu đề của trang web mà không cần phải thay đổi mã nguồn của trang web.

Ví dụ, bạn có thể sử dụng hàm header() để chuyển hướng người dùng đến một trang web khác, thiết lập múi giờ của trang hoặc xác định các thông tin liên quan đến bộ nhớ đệm.

Hướng dẫn Hàm header() PHP

Hàm header() PHPcó ba tham số chính:

  • $header (bắt buộc): Tham số tiêu đề chứa chuỗi tiêu đề để gửi. Hàm này có hai loại cuộc gọi tiêu đề đặc biệt. Tiêu đề đầu tiên bắt đầu với chuỗi HTTP/, chú thích mã trạng thái HTTP để gửi. Trường hợp đặc biệt thứ hai của tiêu đề bắt đầu với Tiêu đề Vị trí:, nó không chỉ gửi lại tiêu đề cho trình duyệt, mà còn cung cấp mã trạng thái REDIRECT (302) cho trình duyệt cho đến khi mã trạng thái 201 hoặc 3xx đã được thiết lập trước đó.
  • $replace (tùy chọn): Tham số này được sử dụng để chỉ định liệu một tiêu đề cùng tên trước đó có nên được thay thế bằng tiêu đề hiện tại hay thêm một tiêu đề khác cùng loại. $ replace là một tham số tùy chọn kiểu boolean. Giá trị mặc định là TRUE, nghĩa là nó sẽ thay thế tiêu đề cùng tên trước đó. Nhưng bạn có thể liên kết nhiều tiêu đề cùng loại nếu FALSE được truyền như tham số thứ hai.
  • http_response_code (tùy chọn): Tham số $http_response_code là một tham số tùy chọn, nó buộc mã phản hồi HTTP thành một giá trị cụ thể. Lưu ý: Tham số http_response_code có ảnh hưởng nếu tiêu đề không trống.

Hàm header() PHP không trả về bất kỳ giá trị nào. Sau phiên bản PHP 5.1.2, hàm này ngừng gửi nhiều hơn một tiêu đề để ngă ph tấn công injection tiêu đề. Nó chỉ cho phép một tiêu đề mỗi lần gọi.

Cách triển khai hàm header() PHP

Hàm header() PHP cho phép bạn gửi một hoặc nhiều tiêu đề HTTP đến trình duyệt. Các tiêu đề HTTP này có thể được sử dụng để xác định nội dung của phản hồi, chuyển hướng người dùng đến một trang khác, hoặc kiểm soát cách trình duyệt xử lý phản hồi.

Cú pháp

header(string $header, bool $replace = true, int $http_response_code = 0);

Parameters

  • $header: Tiêu đề HTTP cần gửi. Tiêu đề phải được định dạng theo chuẩn HTTP.
  • $replace: Chỉ định liệu tiêu đề hiện có có nên được thay thế hay không. Giá trị mặc định là true.
  • $http_response_code: Mã trạng thái HTTP cho phản hồi. Giá trị mặc định là 0.

Ví dụ

// Thiết lập tiêu đề Content-Type
header("Content-Type: text/html; charset=UTF-8");

// Chuyển hướng người dùng đến trang khác
header("Location: https://example.com");

// Đặt mã trạng thái HTTP
header("HTTP/1.1 404 Not Found");

Lưu ý

  • Hàm header() phải được gọi trước khi bất kỳ đầu ra nào được gửi đến trình duyệt. Nếu bạn gọi hàm header() sau khi đã có đầu ra, thì các tiêu đề sẽ không được gửi.
  • Nếu bạn gọi hàm header() nhiều lần với cùng một tiêu đề, thì chỉ tiêu đề cuối cùng sẽ được gửi.
  • Bạn có thể sử dụng hàm headers_sent() để kiểm tra xem liệu các tiêu đề đã được gửi chưa.

Các tiêu đề HTTP phổ biến

Dưới đây là một số tiêu đề HTTP phổ biến:

  • Content-Type: Xác định loại nội dung của phản hồi.
  • Content-Length: Xác định kích thước của nội dung của phản hồi.
  • Location: Chuyển hướng người dùng đến một trang khác.
  • HTTP/1.1 200 OK: Trả về mã trạng thái HTTP thành công.
  • HTTP/1.1 404 Not Found: Trả về mã trạng thái HTTP không tìm thấy.
  • HTTP/1.1 500 Internal Server Error: Trả về mã trạng thái HTTP lỗi máy chủ nội bộ.

Ưu và Nhược điểm Hàm header() PHP

Ưu điểm

  • Cho phép thay đổi thông tin tiêu đề của trang web mà không cần thay đổi mã nguồn của trang web.
  • Có thể sử dụng để chuyển hướng người dùng đến một trang web khác, thiết lập múi giờ của trang hoặc xác định các thông tin liên quan đến bộ nhớ đệm.

Nhược điểm

  • Phải được gọi trước khi gửi bất kỳ đầu ra thực tế nào.
  • Không thể gửi nhiều hơn một tiêu đề mỗi lần gọi.
  • Nếu sử dụng không đúng cách, có thể dẫn đến các vấn đề bảo mật.

Lời khuyên Hàm header() PHP

Khi sử dụng hàm header() PHP, bạn cần phải đảm bảo rằng nó được gọi trước khi gửi bất kỳ đầu ra thực tế nào. Ngoài ra, bạn cũng nên hạn chế việc sử dụng nhiều tiêu đề trong cùng một lần gọi. Nếu tiêu đề được sử dụng không đúng cách, có thể dẫn đến các vấn đề bảo mật.

Nếu bạn không chắc chắn về cách sử dụng hàm header() PHP trong mã của mình, bạn nên tìm kiếm các tài liệu hướng dẫn và các nguồn tài nguyên trực tuyến để biết thêm thông tin.

Kết luận

Hàm header() PHP là một công cụ quan trọng để thay đổi thông tin tiêu đề của trang web của bạn. Tuy nhiên, nó cũng có thể dẫn đến các vấn đề bảo mật nếu sử dụng không đúng cách. Vì vậy, khi sử dụng hàm này, hãy đảm bảo rằng nó được gọi trước khi gửi bất kỳ đầu ra thực tế nào và hạn chế việc sử dụng nhiều tiêu đề trong cùng một lần gọi. Nếu bạn cần hỗ trợ, hãy tìm kiếm các tài liệu hướng dẫn và các nguồn tài nguyên trực tuyến để biết thêm thông tin. 

Tại sao tôi phải gọi hàm header() PHP trước khi gửi bất kỳ đầu ra nào?

Hàm header() cần được gọi trước khi gửi bất kỳ đầu ra thực tế nào vì nó gửi các tiêu đề HTTP trước khi gửi bất kỳ nội dung HTML hoặc văn bản khác. Nếu tiêu đề được gửi sau khi đã gửi đầu ra, nó sẽ không có hiệu lực.

Tôi có thể sử dụng nhiều tiêu đề trong cùng một lần gọi hàm header() không?

Không, hàm header() chỉ cho phép gửi một tiêu đề mỗi lần gọi. Nếu bạn cố gắng gửi nhiều hơn một tiêu đề, hàm sẽ chỉ gửi tiêu đề đầu tiên và bỏ qua các tiêu đề khác.

Tôi có thể sử dụng hàm header() PHP để chuyển hướng người dùng đến một trang web khác không?

Có, bạn có thể sử dụng hàm header() để chuyển hướng người dùng đến một trang web khác bằng cách sử dụng tiêu đề “Location”.

Làm thế nào để tôi thiết lập múi giờ cho trang web của mình bằng hàm header()?

Bạn có thể thiết lập múi giờ cho trang web của mình bằng cách sử dụng tiêu đề “Date” và chỉ định múi giờ mong muốn.

Có những vấn đề bảo mật nào liên quan đến việc sử dụng hàm header() không đúng cách?

Có, nếu sử dụng hàm header() PHP không đúng cách, có thể dẫn đến các vấn đề bảo mật như injection tiêu đề hoặc chuyển hướng lạ. Vì vậy, bạn nên kiểm tra lại mã của mình và đảm bảo rằng tất cả các tiêu đề được sử dụng đúng cách.