× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Cookie trong PHP - Tại sao phải sử dụng Cookie trong PHP?

08/05/2021 01:33

(Cookie trong PHP) Mỗi khi chúng ta truy cập một website bất kỳ trên máy tính như trên wordpress, medium hay các blog khác. Trang web đều sẽ hiển thị thông báo cài đặt cookie với mục đích lưu trữ thông tin trong máy tính của bạn. Tuy nhiên, có bao giờ bạn tự hỏi cookie là gì và làm thế nào để cookie lưu trữ được thông tin của người dùng. Nếu bạn chưa rõ, thì cùng T3H giải mã ngay qua bài viết về cookie trong PHP này bạn nhé!

Cookie trong PHP

Cookie trong PHP

Cookie là một tệp nhỏ mà máy chủ nhúng vào máy tính của người dùng. Thường được sử dụng để xác định người dùng. Mỗi khi máy tính gửi yêu cầu tới một trang có trình duyệt, nó cũng sẽ gửi cookie. 

Theo một định nghĩa khác, Cookie là một đoạn văn bản mà một Web server có thể lưu trên ổ cứng của người dùng. Cookie cho phép một website lưu các thông tin trên máy tính của người dùng và sau đó lấy lại nó. Các mẩu thông tin sẽ được lưu dưới dạng cặp tên – giá trị (name-value).

PHP hỗ trợ Cookie HTTP. 

Có ba bước liên quan đến việc xác định người dùng cũ như sau:

  • Tập lệnh của máy chủ gửi một tập hợp các cookie đến trình duyệt. Ví dụ như tên, tuổi, hoặc ID,...
  • Trình duyệt sẽ lưu trữ các thông tin này trên máy tính để sử dụng trong tương lai
  • Lần tới, khi bạn truy cập vào trang mà lần trước đó bạn đã vào, trình duyệt gửi bất kỳ yêu cầu nào đến máy chủ web thì nó sẽ gửi thông tin cookie đó đến máy chủ và máy chủ sử dụng thông tin đó để xác định người dùng.      

>>> Đọc thêm: PHP IDE là gì? Top IDE tốt nhất năm 2021

Cookie thường được đặt trong tiêu đề HTTP (mặc dù JavaScript cũng có thể đặt cookie trực tiếp trên trình duyệt). Một tập lệnh PHP đặt cookie có thể gửi các tiêu đề trông giống như thế này:

HTTP/1.1 200 OK

Date: Fri, 04 Feb 2000 21:03:38 GMT

Server: Apache/1.3.9 (UNIX) PHP/4.0b3

Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; 

                 path=/; domain=tutorialspoint.com

Connection: close

Content-Type: text/html

Như bạn có thể thấy, tiêu đề Set-Cookie chứa một cặp giá trị tên, ngày GMT, đường dẫn và miền. Tên và giá trị sẽ được mã hóa URL. Trường hết hạn là một hướng dẫn để trình duyệt "quên" cookie sau thời gian và ngày nhất định.

Nếu trình duyệt được định cấu hình để lưu trữ cookie, thì trình duyệt sẽ giữ thông tin này cho đến ngày hết hạn. Nếu người dùng trỏ trình duyệt vào bất kỳ trang nào phù hợp với đường dẫn và miền của cookie, nó sẽ gửi lại cookie đến máy chủ. Tiêu đề của trình duyệt có thể trông giống như thế này -

GET / HTTP/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)

Host: zink.demon.co.uk:1126

Accept: image/gif, */*

Accept-Encoding: gzip

Accept-Language: en

Accept-Charset: iso-8859-1,*,utf-8

Cookie: name=xyz

 

Sau đó, một tập lệnh PHP sẽ có quyền truy cập vào cookie trong các biến môi trường $ _COOKIE hoặc $ HTTP_COOKIE_VARS [], các biến này chứa tất cả các tên và giá trị cookie. Cookie trên có thể được truy cập bằng $ HTTP_COOKIE_VARS ["name"].

>>> Đọc thêm: PHP và C- Điểm khác biệt và tương đồng 

PHP cung cấp hàm setcookie () để đặt cookie. Hàm này yêu cầu tối đa sáu đối số và phải được gọi trước thẻ <html>. Đối với mỗi cookie, chức năng này phải được gọi riêng.

setcookie(name, value, expire, path, domain, security);

Đây là chi tiết của tất cả các đối số -

  • Name - Điều này đặt tên của cookie và được lưu trữ trong một biến môi trường có tên là HTTP_COOKIE_VARS. Biến này được sử dụng khi truy cập cookie.
  • Value- Giá trị này đặt giá trị của biến được đặt tên và là nội dung mà bạn thực sự muốn lưu trữ.
  • Expire- Điều này chỉ định thời gian trong tương lai tính bằng giây kể từ 00:00:00 GMT ngày 1 tháng 1 năm 1970. Sau thời gian này, cookie sẽ không thể truy cập được. Nếu tham số này không được đặt thì cookie sẽ tự động hết hiệu lực khi Trình duyệt web bị đóng.
  • Path- Điều này chỉ định các thư mục mà cookie hợp lệ. Một ký tự gạch chéo chuyển tiếp duy nhất cho phép cookie hợp lệ cho tất cả các thư mục.
  • Domain- Tên miền này có thể được sử dụng để chỉ định tên miền trong các miền rất lớn và phải chứa ít nhất hai dấu chấm để có hiệu lực. Tất cả cookie chỉ hợp lệ cho máy chủ và miền đã tạo ra chúng.
  • Security- Điều này có thể được đặt thành 1 để chỉ định rằng cookie chỉ nên được gửi bằng cách truyền an toàn sử dụng HTTPS, nếu không được đặt thành 0 có nghĩa là cookie có thể được gửi bằng HTTP thông thường.

Ví dụ sau sẽ tạo tên hai cookie và tuổi các cookie này sẽ hết hạn sau một giờ.

<?php

   setcookie("name", "John Watkin", time()+3600, "/","", 0);

   setcookie("age", "36", time()+3600, "/", "",  0);

?>

<html>

   

   <head>

      <title>Setting Cookies with PHP</title>

   </head>

   

   <body>

      <?php echo "Set Cookies"?>

   </body>

   

</html>

Để xóa Cookie một cách đơn giản và chính thực, bạn nên gọi hàm setcookie() với đối số tên. Tuy nhiên, điều này không phải lúc nào cũng hoạt động tốt, do bạn bạn không nên quá phụ thuộc vào cách này.

Cách an toàn nhất là đặt cookie với ngày đã hết hạn trước đó, như sau:

<?php

   setcookie( "name", "", time()- 60, "/","", 0);

   setcookie( "age", "", time()- 60, "/","", 0);

?>

<html>

   

   <head>

      <title>Deleting Cookies with PHP</title>

   </head>

   

   <body>

      <?php echo "Deleted Cookies" ?>

   </body>

 </html>

Kết luận: Trên đây là các thông tin về cookie trong PHP cùng các trường hợp sử dụng PHP cụ thể. Với vai trò lưu trữ thông tin, cookie có thể tạo điều kiện thuận lợi cho người dùng. Hy vọng các thông tin trên hữu ích với bạn trong quá trình làm việc với PHP. Tìm hiểu thêm về PHP và các ngôn ngữ lập trình khác qua các khóa học lập trình tại tại Viện công nghệ thông tin T3H bạn nhé!

Nguồn tham khảo: tutorialspoint