Sử dụng http header trong php là bài giới thiệu về http header, cách xem chúng và sử dụng hàm header trong php để tạo http header cần thiết
Sử dụng http header trong php
- http header là gì
- Cách xem http header trong một request
- Hàm header trong php
- Hàm header thông báo kiểu dữ liệu cho trình duyệt
http header là gì
HTTP Header là thành phần chứa nhiều dữ liệu quan trọng dùng để trao đổi thông tin giữa trình duyệt và webserver thông qua giao thức http.
Nhờ có header mà browser và webserver mới có thể “hiểu” được nhau. Ví dụ trong http header chứa Authentication (thông tin chứng thực), Cache-Control (thời gian cache) , Content-Length (độ dài dữ liệu) , Content-Type (kiểu của nội dung) , Cookie (các biến sẽ được dùng chung trong nhiều trang web) , Date (thời điểm request/response) , User-Agent ( thông tin của trình duyệt).
Cách xem http header trong một request
Các thông tin về http header thường ít thể hiện trong trình duyệt, nhưng là một dev thì bạn cần phải biết cách xem chúng.
Xem http header trong request
Khi trình duyệt gửi một request lên server, nó sẽ gửi lên server nhiều thông tin trong http header . Một vài http header bạn sẽ thường hay thấy, đó là
- Accept: những loại dữ liệu mà trình duyệt có thể hiểu được.
- Accept-Encoding: những format nén dữ liệu mà trình duyệt hiểu được.
- Cache-Control: thông tin cache của trang web trong trình duyệt.
- User-Agent: thông tin về tên và version của trình duyệt.
- Cookie: các biến đã được lưu trước đó để dùng chung trong các trang web trong website
Để xem các header trong trình duyệt thì bạn mở Developer Toolbox. Xong nhắp vào tab Nerwork rồi chọn file request (nếu không thấy thì F5 nạp lại trang sẽ thấy). Tiếp tục chọn tab Headers và nhắp chọn Request Headers . Chi tiết tham khảo hình dưới đây.
Xem các http header trong response
Khi server gửi trả response về cho trình duyệt, nó cũng gửi về nhiều http header. Một vài cái phổ biến đó là
- Date: thời điểm trả response
- Etag: thông tin version của tài nguyên trả về cho trình duyệt
- Server: thông tin về web server
- Last-Modified: thời điểm mà tài nguyên thay đổi lần cuối …
Để xem các header trong response thì Bạn mở Developer Toolbox. Xong thì nhắp tab Nerwork để chọn file request, tiếp theo chọn tab Headers và cuối cùng nhắp tab Response Headers. Trình tự tham khảo như hình sau.
Hàm header trong php
Trong PHP có một hàm tên là header . Hàm này sẽ giúp bạn sử dụng http header trong php . Hàm này giúp tạo các http header để gửi về trình duyệt khi bạn có nhu cầu. Sau đây là một số ví dụ
Hàm header chuyển đến trang khác
Chuyển người dùng đến một trang web khác là cần thiết trong nhiều trường hợp. Sau đây là vài tình huống trong lập trình bạn thế nào cũng gặp.
Tính huống một: User chưa đăng nhập nhưng lại vào 1 trang web mà bạn muốn họ phải đăng nhập mới cho xem. Trang đổi pass chẳng hạn. Trrong tình huống này bạn cần chuyển user đến trang web khác – là trang đăng nhập – để họ đăng nhập vào.
Tình huống hai: User nhập thông tin vào form đăng ký và nhắp nút submit, bạn lưu thông tin vào database xong thìchuyển họ đến trang web khác là trang cảm ơn, hoặc trang web thông báo mời kích hoạt tài khoản chẳng hạn.
Khi cần chuyển người dùng đến trang web khác thì phải làm sao? Sử dụng http header trong php với hàm sau: header(“location:url”);
Cụ thể trong trang đăng ký, chuyển đến trang camon.php thì dùng lệnh như sau:
<?php header("location:camon.php"); ?>
Hàm header thông báo kiểu dữ liệu cho trình duyệt
Trang .php của bạn không phải lúc nào cũng trả về code html đâu. Có khi bạn đọc 1 file hình, 1 file nhạc, 1 file pdf rồi trả về trình duyệt đó. Lúc này bạn cần báo cho trình duyệt biết kiểu dữ liệu đổ về để nó xử lý cho đúng. Thông báo bằng cách dùng hàm header với chỉ thị Content-Type là kiểu dữ liệu trả về.
Thông báo trả về 1 hình
Trong ví dụ dưới, trang c.php không trả về code html mà đọc 1 file c.jpg để trả về 1 hình cho trình duyệt, vì thế phía trên cần có lệnh báo hiệu kiểu dữ liệu để trình duyệt xử lý cho đúng(màu đỏ)
<?php //xử lý gì đó tùy ý, kiểm tra quyền truy cập chẳng hạn header("Content-type: image/png"); require_once("c.jpg"); ?>
Thông báo trả về kiểu excel
Đây là thông báo đổ về excel chứ không phải là code html tuần túy. Trình duyệt sẽ lưu thành file a.xls ( tên a.xls có thể thay đổi tùy ý bạn)
<?php //xử lý gì đó tùy ý, kiểm tra quyền truy cập chẳng hạn header("Content-Type: application/vnd.ms-excel"); header('Content-Disposition: attachment; filename="a.xls"'); ?> <meta charset="utf-8"> <table border="1" width="800"> <tr><th>TT</th><th>Tên</th><th>Giá</th></tr> <tr><td>1</td><td>HP 185a</td><td>1</td></tr> <tr><td>2</td><td>Acer X34</td><td>4</td></tr> <tr><td>3</td><td>LG P931</td><td>2</td></tr> </table>
Mở trang web bằng trình duyệt, lúc này trình duyệt không hiện nội dung mà sẽ lưu nội dung trả về thành file a.xls.
Dùng MS Excel mở file a.xls sẽ thấy file được mở ra
Gửi thông báo kiểu dữ liệu json sẽ trả về trình duyệt
Dùng hàm header với chỉ thị Content-Type:application.json để báo cho trình duyệt biết rằng kiểu dữ liệu json sẽ trả về chứ không phải code html. Đây là lệnh rất phổ biến trong lập trình api
<?php header("Content-Type: application/json"); ?> [ {"id":1, "ten":"Tèo", "tuoi": 18}, {"id":2, "ten":"Tý", "tuoi": 20}, {"id":3, "ten":"Lượm", "tuoi": 19}, ]
Xem trang web, trình duyệt sẽ hành xử với dữ liệu đổ về đúng như thông báo gửi từ server chứ không phải như là code html thông thường
Bài viết sử dụng http header trong php này giải thích bạn hiểu về http header, cách xem chúng trong trình duyệt, đề cập đến hàm header và hai ứng dụng thường dùng của hàm header để tạo http header đó là location (chuyển hướng) và Content-Type (thông báo kiểu dữ liệu đổ về) cho trình duyệt.
Hàm header trong php vẫn còn các tác dụng khác nữa, như các chỉ thị về Cache, Content-Length, Cookie, Last-Modified, Allow, Content-Encoding, Retry-After…. sẽ trình bày trong phần tiếp theo.
Mời bạn xem thêm các tài liệu sau nếu nuốn:
- https://www.php.net/manual/en/function.header.php
- https://www.w3schools.com/php/func_network_header.asp