Hướng dẫn how does cookie work in php? - cookie hoạt động như thế nào trong php?


Một cookie thường được sử dụng để xác định người dùng. 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. Mỗi lần cùng một máy tính yêu cầu một trang với trình duyệt, nó cũng sẽ gửi cookie. Với PHP, bạn có thể tạo và truy xuất các giá trị cookie.


Một cookie được tạo với chức năng setcookie().

Cú pháp

setCookie (tên, giá trị, hết hạn, đường dẫn, tên miền, an toàn, httponly);

Chỉ cần tham số tên. Tất cả các tham số khác là tùy chọn.


Ví dụ sau đây tạo ra một cookie có tên "Người dùng" với giá trị "John Doe". Cookie sẽ hết hạn sau 30 ngày (86400 * 30). "/" Có nghĩa là cookie có sẵn trong toàn bộ trang web (nếu không, chọn thư mục bạn thích).

Sau đó, chúng tôi lấy giá trị của cookie "người dùng" (sử dụng biến toàn cầu $ _cookie). Chúng tôi cũng sử dụng chức năng isset() để tìm hiểu xem cookie có được đặt không:

Thí dụ

$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>

if(!isset($_COOKIE[$cookie_name])) {
  echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
  echo "Cookie '" . $cookie_name . "' is set!
";
  echo "Value is: " . $_COOKIE[$cookie_name];
}
?>


Chạy ví dụ »

Lưu ý: Hàm setcookie() phải xuất hiện trước thẻ. The setcookie() function must appear BEFORE the tag.

Lưu ý: Giá trị của cookie được tự động được mã hóa khi gửi cookie và tự động được giải mã khi nhận được (để ngăn chặn urlencoding, thay vào đó sử dụng ____10). The value of the cookie is automatically URLencoded when sending the cookie, and automatically decoded when received (to prevent URLencoding, use

setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
0 instead).



Để sửa đổi cookie, chỉ cần đặt (một lần nữa) cookie bằng hàm setcookie():

Thí dụ

$cookie_name = "user";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>

if(!isset($_COOKIE[$cookie_name])) {
  echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
  echo "Cookie '" . $cookie_name . "' is set!
";
  echo "Value is: " . $_COOKIE[$cookie_name];
}
?>


Chạy ví dụ »


Lưu ý: Hàm setcookie() phải xuất hiện trước thẻ.

Lưu ý: Giá trị của cookie được tự động được mã hóa khi gửi cookie và tự động được giải mã khi nhận được (để ngăn chặn urlencoding, thay vào đó sử dụng ____10).

Thí dụ

// set the expiration date to one hour ago
setcookie("user", "", time() - 3600);
?>

echo "Cookie 'user' is deleted.";
?>


Chạy ví dụ »


Lưu ý: Hàm setcookie() phải xuất hiện trước thẻ.

Lưu ý: Giá trị của cookie được tự động được mã hóa khi gửi cookie và tự động được giải mã khi nhận được (để ngăn chặn urlencoding, thay vào đó sử dụng ____10).

Thí dụ

setcookie("test_cookie", "test", time() + 3600, '/');
?>

Chạy ví dụ »
if(count($_COOKIE) > 0) {
  echo "Cookies are enabled.";
} else {
  echo "Cookies are disabled.";
}
?>


Chạy ví dụ »


Lưu ý: Hàm setcookie() phải xuất hiện trước thẻ.

Lưu ý: Giá trị của cookie được tự động được mã hóa khi gửi cookie và tự động được giải mã khi nhận được (để ngăn chặn urlencoding, thay vào đó sử dụng ____10).




Bạn có thể đã nghe về cookie, nhưng chính xác thì chúng là gì, và chúng ta có thể làm gì với chúng? Trong hướng dẫn này, chúng tôi sẽ tập trung vào những điều cơ bản của cookie và tìm hiểu về chức năng của chúng trong các ứng dụng web và môi trường trang web khác nhau. Chúng tôi cũng sẽ học cách làm việc với cookie trong PHP.

Cookies so với các biến phiên

Không chắc chắn nếu bạn cần cookie hoặc biến phiên? Các biến phiên là một cách để lưu trữ dữ liệu về người dùng trong cơ sở dữ liệu và truy xuất nó sau. Cookies là một cách để lưu trữ dữ liệu về người dùng trên máy tính của người dùng. Các biến phiên thường được sử dụng trong các ứng dụng cần theo dõi hoạt động của người dùng. Cookie thường được sử dụng trong các ứng dụng cần lưu trữ thông tin về người dùng cho một trang web.

Bạn cũng có thể tìm hiểu về các biến phiên trong bài đăng của tôi về việc sử dụng các biến phiên trong PHP.

Hãy bắt đầu với định nghĩa:

Cookie HTTP (còn được gọi là Cookie web, Cookie Internet, Cookie trình duyệt hoặc Cookie đơn giản) là một đoạn dữ liệu nhỏ được lưu trữ trên máy tính của người dùng bằng trình duyệt web trong khi duyệt một trang web.

Chúng tôi có thể nghĩ về cookie dưới dạng tệp văn bản, được lưu vào máy tính của bạn. Khi bạn yêu cầu bất kỳ trang web nào, một máy chủ web sẽ gửi phản hồi của trang web đó đến trình duyệt của bạn. Cùng với phản hồi, một máy chủ web cũng có thể gửi các tiêu đề HTTP

setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
4 yêu cầu trình duyệt của bạn tạo tệp cookie trên máy tính của bạn. Khi cookie được tạo cho một trang web, một máy chủ web sau đó có thể đọc và ghi nội dung từ và vào các tệp này.

Cookie có ngày hết hạn cùng với dữ liệu cookie. Ngày này được đặt để trình duyệt có thể xóa cookie cũ khi chúng không còn cần thiết bởi máy chủ web. Nếu ngày hết hạn trống, cookie sẽ bị xóa khi kết nối với máy chủ được đóng. Điều này xảy ra khi người dùng đóng cửa sổ hoặc tab của trang web hoặc khi người dùng đóng toàn bộ trình duyệt. Những cookie này, đôi khi được gọi là cookie phiên, chủ yếu được sử dụng để lưu trữ các cài đặt tạm thời.

Hãy để nhanh chóng thấy tiêu đề

setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
5 HTTP trông như thế nào với ví dụ sau:

Set-Cookie: LastVisitedSection=CodeTutsplus; expires=Fri, 31-Mar-2021 23:59:59 GMT; path=/; domain=.tutsplus.com

Trong ví dụ trên, một máy chủ web yêu cầu trình duyệt tạo cookie

setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
6. Trình duyệt sẽ lưu trữ
setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
7 dưới dạng dữ liệu cookie. Một tệp cookie có thể lưu trữ một chuỗi văn bản hoặc một số có kích thước tối đa 4kb.

Thuộc tính

setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
8 được sử dụng để chỉ định ngày hết hạn. Và do đó, cookie
setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
6 sẽ bị xóa khỏi máy tính của bạn sau ngày
0: 31 tháng 3 năm 2021 lúc nửa đêm.

Thuộc tính miền được sử dụng để chỉ định miền trong đó cookie sẽ hoạt động. Nếu miền là

1, cookie sẽ chỉ được gửi đến máy chủ của miền đó và nếu miền là 
2, cookie sẽ được gửi đến bất kỳ máy chủ nào của bất kỳ tên miền phụ nào của Google, bao gồm cả 
3. Trong ví dụ của chúng tôi, cookie 
setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
6 sẽ có sẵn cho
5 và bất kỳ tên miền phụ nào của 
5.

Đường dẫn là đường dẫn của miền mà cookie được gửi. Điều này có nghĩa là, nếu đường dẫn được đặt thành

7 và miền được đặt thành 
1, cookie sẽ chỉ được gửi đến máy chủ nếu trình duyệt yêu cầu một tệp từ 
9. Nếu đường dẫn được đặt thành 
0, cookie sẽ được gửi đến máy chủ bất kể vị trí của tệp được yêu cầu trên máy chủ. Trong ví dụ của chúng tôi, cookie 
setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
6 sẽ được gửi đến tất cả các trang của miền
5.

Vì vậy, cách mà một máy chủ web tạo cookie trên máy tính của bạn. Trong phần tiếp theo, chúng tôi sẽ thảo luận về mục đích của cookie.

Giao thức HTTP là một giao thức không trạng thái, điều đó có nghĩa là không có cách tích hợp nào một máy chủ có thể nhớ một người dùng cụ thể giữa nhiều yêu cầu. Ví dụ: khi bạn truy cập một trang web, máy chủ chỉ chịu trách nhiệm cung cấp nội dung của trang được yêu cầu. Khi bạn truy cập các trang khác của cùng một trang web, máy chủ web sẽ diễn giải từng yêu cầu riêng biệt, như thể chúng không liên quan đến nhau. Không có cách nào để máy chủ biết rằng mỗi yêu cầu có nguồn gốc từ cùng một người dùng.

Bây giờ, nếu bạn muốn triển khai các tính năng như đăng nhập người dùng hoặc giỏ hàng, bạn sẽ cần xác định xem hai yêu cầu có đến từ cùng một trình duyệt hay không. Điều này là không thể với một giao thức không trạng thái. Chúng tôi cần duy trì trạng thái hoặc phiên giữa các yêu cầu được trình duyệt thực hiện để xác định người dùng. Đó là nơi mà cookie đến giải cứu!

Cookie cho phép bạn chia sẻ thông tin trên các trang khác nhau của một trang web hoặc ứng dụng, do đó chúng giúp duy trì trạng thái. Điều này cho phép máy chủ biết rằng tất cả các yêu cầu bắt nguồn từ cùng một người dùng, do đó cho phép trang web hiển thị thông tin và tùy chọn dành riêng cho người dùng.

Biểu đồ sau đây mô tả cách giao thức HTTP hoạt động với cookie.

Hướng dẫn how does cookie work in php? - cookie hoạt động như thế nào trong php?
Hướng dẫn how does cookie work in php? - cookie hoạt động như thế nào trong php?
Hướng dẫn how does cookie work in php? - cookie hoạt động như thế nào trong php?

Trong phần này, chúng tôi sẽ thảo luận về cách bạn có thể tạo cookie trong PHP.

Để tạo cookie trong PHP, bạn cần sử dụng hàm

3. Hãy để một cái nhìn vào cú pháp cơ bản được sử dụng để tạo cookie.

setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );

Danh sách đối số trong hàm

3 sẽ trông quen thuộc với bạn vì chúng tôi đã thảo luận về hầu hết các tham số này trước đó trong bài viết này. Tuy nhiên, có hai lập luận nữa, 
5 và 
6, rất quan trọng để hiểu.

Nếu bạn đặt tham số

5 thành 
8, cookie sẽ chỉ được tạo nếu kết nối an toàn tồn tại. Tham số 
6 chỉ cho phép bạn tạo cookie HTTP và do đó nó sẽ chỉ có thể truy cập thông qua giao thức HTTP. Cookies được đặt làm HTTP chỉ có thể truy cập được bằng các ngôn ngữ kịch bản như JavaScript.

Vì vậy, đó là nó cho cú pháp, hãy để một cái nhìn về một ví dụ trong thế giới thực.

Nó sẽ tạo ra cookie

setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
6 với giá trị
setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
7 và nó sẽ hết hạn trong một giờ. Đối số đường dẫn được đặt thành
0, vì vậy nó sẽ được gửi đến tất cả các trang của miền 
5.

Bây giờ, hãy để một cái nhìn vào ví dụ sau.

Khi chúng tôi đặt đối số đường dẫn thành

4, cookie 
5 sẽ chỉ được gửi nếu trình duyệt yêu cầu các trang từ 
6.

Theo cách này, bạn có thể tạo cookie trong PHP. Điều quan trọng nhất cần nhớ, khi tạo cookie trong PHP, là bạn phải đặt tất cả các cookie trước khi bạn gửi bất kỳ dữ liệu nào đến trình duyệt. Cookie thuộc về tiêu đề, vì vậy bạn nên luôn luôn khởi tạo cookie mới trước bất kỳ đầu ra nào. Điều này bao gồm các lệnh

7 hoặc 
8 và thẻ 
9 hoặc 
0.

Đọc cookie trong PHP rất đơn giản. Bạn cần sử dụng biến Superglobal

1 để đọc cookie có sẵn. Trong thực tế, biến 
1 là một mảng chứa tất cả các cookie.

Hãy để một cái nhìn về đoạn trích sau đây.

Bạn có thể sử dụng chức năng

3 hoặc 
4 để kiểm tra tất cả các cookie có sẵn cho mục đích gỡ lỗi.

Thật dễ dàng để đọc cookie trong PHP!

Trong phần tiếp theo, chúng tôi sẽ thấy cách xóa cookie.

Sẽ rất thú vị khi bạn biết rằng bạn cũng có thể sử dụng chức năng

3 để xóa cookie. Điều hấp dẫn là bạn cần đặt ngày hết hạn trong quá khứ và một cookie sau đó sẽ bị xóa.

Hãy cùng xem nó trong hành động trong ví dụ sau.

Như bạn có thể thấy, chúng tôi đã chỉ định ngày hết hạn trong quá khứ bằng cách đặt nó thành

6. Điều quan trọng cần lưu ý là chúng tôi cũng đã sử dụng chức năng 
7 để loại bỏ cookie 
setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
6 khỏi biến SuperGlobal
1 để đảm bảo rằng cookie 
setcookie ( string $name , string $value = "" , int $expires = 0 , string $path = "" , string $domain = "" , bool $secure = false , bool $httponly = false );
6 không thể truy cập được sau này trong mã.

Để kết thúc, tôi muốn tổng hợp một số thực tiễn tốt nhất:

  • Không bao giờ chèn dữ liệu nhạy cảm vào cookie. Một khách hàng có thể duyệt trên máy tính công cộng, vì vậy đừng để lại bất kỳ thông tin cá nhân nào phía sau.
  • Không bao giờ tin tưởng dữ liệu đến từ cookie. Luôn lọc chuỗi và số! Máy tính khách có thể thay đổi cookie theo ý muốn, vì vậy kẻ tấn công có thể viết dữ liệu độc hại cho cookie để làm điều gì đó bạn không muốn dịch vụ của bạn làm.
  • Cố gắng ước tính thời gian cookie phải hợp lệ và đặt ngày hết hạn cho phù hợp. Bạn không muốn hog máy tính của khách hàng với các cookie cũ được thiết lập sẽ hết hạn sau một trăm năm.
  • Luôn đặt cờ
    1 và 
    2 khi có thể. Nếu ứng dụng của bạn không chỉnh sửa cookie với JavaScript, hãy bật 
    2. Nếu bạn luôn có kết nối HTTPS, hãy bật 
    1. Điều này cải thiện tính toàn vẹn và bảo mật của dữ liệu.

Sự kết luận

Hôm nay, chúng tôi đã thảo luận về những điều cơ bản của cookie và cách sử dụng chúng trong PHP. Một chủ đề liên quan là các phiên và biến phiên. Bạn có thể tìm hiểu cách sử dụng các phiên và biến phiên trong PHP ngay tại đây tại Envato Tuts+!

Bạn có thấy bài đăng này hữu ích?

Hướng dẫn how does cookie work in php? - cookie hoạt động như thế nào trong php?

Kỹ sư phần mềm, FSPL, Ấn Độ

Tôi là một kỹ sư phần mềm chuyên nghiệp, và tôi đã thực hiện kỹ thuật khoa học máy tính. Đã khoảng 14 năm tôi đã làm việc trong lĩnh vực phát triển trang web và công nghệ nguồn mở. Chủ yếu, tôi làm việc trên các dự án và khung dựa trên PHP và MySQL. Trong số đó, tôi đã làm việc trên các khung web như Codeignitor, Symfony và Laravel. Ngoài ra, tôi cũng có cơ hội làm việc trên các hệ thống CMS khác nhau như Joomla, Drupal và WordPress và các hệ thống thương mại điện tử như Magento, Opencart, WooC Commerce và Drupal Commerce. Tôi cũng muốn tham dự các hội nghị công nghệ cộng đồng, và là một phần của điều đó, tôi đã tham dự Hội nghị Thế giới Joomla 2016 được tổ chức tại Bangalore (Ấn Độ) và 2018 Drupalcon được tổ chức tại Mumbai (Ấn Độ). Ngoài ra, tôi thích đi du lịch, khám phá những địa điểm mới và nghe nhạc!

Cookie là gì, và chúng hoạt động như thế nào? Cookie là một chút thông tin mà một trang web lưu trữ trên máy tính của bạn. Khi bạn xem lại trang web, trình duyệt của bạn sẽ gửi thông tin trở lại trang web. Thông thường một cookie được thiết kế để ghi nhớ và nói với một trang web một số thông tin hữu ích về bạn.When you revisit the website, your browser sends the information back to the site. Usually a cookie is designed to remember and tell a website some useful information about you.
Đặt cookie trong PHP: Để đặt cookie trong PHP, hàm setCookie () được sử dụng. Hàm setCookie () cần được gọi trước bất kỳ đầu ra nào được tạo bởi tập lệnh nếu không cookie sẽ không được đặt. Cú pháp: setcookie (tên, giá trị, hết hạn, đường dẫn, miền, bảo mật);setcookie(name, value, expire, path, domain, security);
Cookie luôn được lưu trữ trong máy khách.Đường dẫn chỉ đặt ra các hạn chế đối với những trang từ xa có thể truy cập cookie đã nói.Ví dụ: nếu bạn đặt cookie với đường dẫn "/foo/" thì chỉ các trang trong thư mục "/foo/" và thư mục con của "/foo/" có thể đọc cookie.in the client. The path only sets restrictions to what remote pages can access said cookies. For example, if you set a cookie with the path "/foo/" then only pages in the directory "/foo/" and subdirectories of "/foo/" can read the cookie.
Cookie là một phần dữ liệu từ một trang web được lưu trữ trong trình duyệt web mà trang web có thể truy xuất sau đó.Cookie được sử dụng để nói với máy chủ rằng người dùng đã quay lại một trang web cụ thể.a piece of data from a website that is stored within a web browser that the website can retrieve at a later time. Cookies are used to tell the server that users have returned to a particular website.