Hướng dẫn setrawcookie php - setrawcookie php

(Php 4, Php 5, Php 7, Php 8)

setcookie - Gửi cookieSend a cookie

Sự mô tả

setCookie (& nbsp; & nbsp; & nbsp; & nbsp; chuỗi ____ 1, & nbsp; & nbsp; & nbsp; & nbsp; chuỗi $value = "" = "", & nbsp; & nbsp; & nbsp; & nbsp; chuỗi $domain = ""(
    string $name,
    string $value = "",
    int $expires_or_options = 0,
    string $path = "",
    string $domain = "",
    bool $secure = false,
    bool $httponly = false
): bool

setCookie (chuỗi $name, chuỗi $value = "", mảng $name2 = []): bool(string $name, string $value = "", array $name2 = []): bool

Khi cookie đã được đặt, chúng có thể được truy cập trên tải trang tiếp theo với mảng $ _cookie. Giá trị cookie cũng có thể tồn tại trong $ _Request.

Thông số

»& NBSP; RFC 6265 cung cấp tham chiếu quy phạm về cách diễn giải mỗi tham số setCookie ().setcookie() parameter is interpreted.

$name3

Tên của cookie.

$name4

Giá trị của cookie. Giá trị này được lưu trữ trên máy tính khách hàng; Không lưu trữ thông tin nhạy cảm. Giả sử $name3 là $name6, giá trị này được lấy thông qua $ _cookie ['cookiename']]]

$name7

Thời gian cookie hết hạn. Đây là một dấu thời gian UNIX vì vậy trong số giây kể từ thời đại. Một cách để thiết lập điều này là bằng cách thêm số giây trước khi cookie hết hạn vào kết quả của thời gian gọi (). Chẳng hạn, $name8 sẽ đặt cookie hết hạn sau 30 ngày. Một tùy chọn khác là sử dụng hàm mktime (). Nếu được đặt thành $name9 hoặc bỏ qua, cookie sẽ hết hạn vào cuối phiên (khi trình duyệt đóng).time(). For instance, $name8 will set the cookie to expire in 30 days. Another option is to use the mktime() function. If set to $name9, or omitted, the cookie will expire at the end of the session (when the browser closes).

Ghi chú::

Bạn có thể nhận thấy tham số $name7 có dấu thời gian UNIX, trái ngược với định dạng ngày $value1, điều này là do PHP thực hiện chuyển đổi này trong nội bộ.

$value2

Đường dẫn trên máy chủ trong đó cookie sẽ có sẵn. Nếu được đặt thành $value3, cookie sẽ có sẵn trong toàn bộ $value4. Nếu được đặt thành $value5, cookie sẽ chỉ có sẵn trong thư mục $value6 và tất cả các thư mục phụ như $value7 của $value4. Giá trị mặc định là thư mục hiện tại mà cookie đang được đặt vào.

$value4

Miền (phụ) mà cookie có sẵn. Đặt cái này thành một tên miền phụ (chẳng hạn như $expires_or_options0) sẽ cung cấp cookie cho tên miền phụ đó và tất cả các miền phụ khác của nó (tức là w2.www.example.com). Để làm cho cookie có sẵn cho toàn bộ miền (bao gồm tất cả các tên miền phụ của nó), chỉ cần đặt giá trị thành tên miền ($expires_or_options1, trong trường hợp này).

Các trình duyệt cũ hơn vẫn triển khai »& NBSP; RFC 2109 có thể yêu cầu $expires_or_options2 hàng đầu để phù hợp với tất cả các tên miền phụ.

$expires_or_options3

Chỉ ra rằng cookie chỉ nên được truyền qua kết nối HTTPS an toàn từ máy khách. Khi được đặt thành $expires_or_options4, cookie sẽ chỉ được đặt nếu kết nối an toàn tồn tại. Ở phía máy chủ, trên lập trình viên chỉ gửi loại cookie này trên kết nối an toàn (ví dụ: đối với $ _server ["https"]).$expires_or_options4, the cookie will only be set if a secure connection exists. On the server-side, it's on the programmer to send this kind of cookie only on secure connection (e.g. with respect to $_SERVER["HTTPS"]).

$expires_or_options5

Khi $expires_or_options4 cookie sẽ chỉ có thể truy cập thông qua giao thức HTTP. Điều này có nghĩa là cookie sẽ không được truy cập bằng các ngôn ngữ kịch bản, chẳng hạn như JavaScript. Có ý kiến ​​cho rằng cài đặt này có thể giúp giảm hành vi trộm cắp danh tính thông qua các cuộc tấn công XSS (mặc dù nó không được tất cả các trình duyệt hỗ trợ), nhưng yêu cầu đó thường bị tranh cãi. $expires_or_options4 hoặc false$expires_or_options4 the cookie will be made accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. It has been suggested that this setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers), but that claim is often disputed. $expires_or_options4 or false

$expires_or_options9

Một mảng kết hợp có thể có bất kỳ khóa $path0, $value2, $value4, $expires_or_options3, $expires_or_options5 và $path5. Nếu bất kỳ khóa nào khác được trình bày một lỗi của cấp $path6 được tạo ra. Các giá trị có cùng ý nghĩa như được mô tả cho các tham số có cùng tên. Giá trị của phần tử $path5 phải là $path8, $path9 hoặc $domain0. Nếu bất kỳ tùy chọn được phép nào không được cung cấp, các giá trị mặc định của chúng giống như các giá trị mặc định của các tham số rõ ràng. Nếu phần tử $path5 bị bỏ qua, không có thuộc tính cookie SameTeite được đặt.array which may have any of the keys $path0, $value2, $value4, $expires_or_options3, $expires_or_options5 and $path5. If any other key is present an error of level $path6 is generated. The values have the same meaning as described for the parameters with the same name. The value of the $path5 element should be either $path8, $path9 or $domain0. If any of the allowed options are not given, their default values are the same as the default values of the explicit parameters. If the $path5 element is omitted, no SameSite cookie attribute is set.

Trả về giá trị

Nếu đầu ra tồn tại trước khi gọi hàm này, setCookie () sẽ thất bại và trả về false. Nếu setcookie () chạy thành công, nó sẽ trả lại $expires_or_options4. Điều này không cho biết người dùng có chấp nhận cookie hay không.setcookie() will fail and return false. If setcookie() successfully runs, it will return $expires_or_options4. This does not indicate whether the user accepted the cookie.

Thay đổi

Phiên bảnSự mô tả
7.3.0 Một chữ ký thay thế hỗ trợ một mảng $expires_or_options9 đã được thêm vào. Chữ ký này cũng hỗ trợ cài đặt thuộc tính Cookie Samesite.

Ví dụ

Một số ví dụ theo cách gửi cookie:

Ví dụ #1 setCookie () Gửi ví dụsetcookie() send example

$domain5

Lưu ý rằng phần giá trị của cookie sẽ tự động được mã hóa khi bạn gửi cookie và khi nhận được, nó được tự động được giải mã và gán cho một biến theo cùng tên với tên cookie. Nếu bạn không muốn điều này, bạn có thể sử dụng SetRawCookie () thay vào đó. Để xem nội dung của cookie thử nghiệm của chúng tôi trong một tập lệnh, chỉ cần sử dụng một trong các ví dụ sau:setrawcookie() instead. To see the contents of our test cookie in a script, simply use one of the following examples:

$domain6

Ví dụ #2 SetCookie () Xóa ví dụsetcookie() delete example

Khi xóa cookie, bạn nên đảm bảo rằng ngày hết hạn là trong quá khứ, để kích hoạt cơ chế loại bỏ trong trình duyệt của bạn. Ví dụ theo cách xóa cookie được gửi trong ví dụ trước:

$domain7

Ví dụ #3 setCookie () và mảngsetcookie() and arrays

Bạn cũng có thể đặt cookie mảng bằng cách sử dụng ký hiệu mảng trong tên cookie. Điều này có tác dụng của việc thiết lập nhiều cookie như bạn có các phần tử mảng, nhưng khi cookie được nhận bởi tập lệnh của bạn, tất cả các giá trị đều được đặt trong một mảng có tên của cookie:

$domain8

Ví dụ trên sẽ xuất ra:

three : cookiethree
two : cookietwo
one : cookieone

Lưu ý: Sử dụng các ký tự phân cách như $domain9 và $secure0 như một phần của tên cookie không tuân thủ RFC 6265, phần 4, nhưng được cho là được hỗ trợ bởi các tác nhân người dùng theo RFC 6265, Phần 5.: Using separator characters such as $domain9 and $secure0 as part of the cookie name is not compliant to RFC 6265, section 4, but supposed to be supported by user agents according to RFC 6265, section 5.

Ghi chú

Ghi chú::

Bạn có thể sử dụng bộ đệm đầu ra để gửi đầu ra trước cuộc gọi của chức năng này, với chi phí của tất cả đầu ra của bạn đến trình duyệt được đệm trong máy chủ cho đến khi bạn gửi nó. Bạn có thể làm điều này bằng cách gọi ob_start () và ob_end_flush () trong tập lệnh của bạn hoặc đặt lệnh cấu hình $secure1 trên các tệp cấu hình php.ini hoặc máy chủ của bạn.ob_start() and ob_end_flush() in your script, or setting the $secure1 configuration directive on in your php.ini or server configuration files.

Những cạm bẫy phổ biến:

  • Cookie sẽ không được hiển thị cho đến khi tải tiếp theo của một trang mà cookie sẽ được hiển thị. Để kiểm tra xem cookie có được đặt thành công hay không, hãy kiểm tra cookie trên trang tải tiếp theo trước khi cookie hết hạn. Thời gian hết hạn được đặt thông qua tham số $name7. Một cách tốt đẹp để gỡ lỗi sự tồn tại của cookie là bằng cách gọi $secure3.
  • Cookie phải được xóa với các tham số giống như chúng được đặt. Nếu đối số giá trị là một chuỗi trống và tất cả các đối số khác đều khớp với một cuộc gọi trước đó đến SetCookie, thì cookie có tên được chỉ định sẽ bị xóa khỏi máy khách từ xa. Điều này đạt được nội bộ bằng cách đặt giá trị thành $secure4 và thời gian hết hạn trong quá khứ.
  • Vì đặt cookie có giá trị false sẽ cố gắng xóa cookie, bạn không nên sử dụng các giá trị Boolean. Thay vào đó, sử dụng 0 cho false và 1 cho $expires_or_options4.false will try to delete the cookie, you should not use boolean values. Instead, use 0 for false and 1 for $expires_or_options4.
  • Tên cookie có thể được đặt làm tên mảng và sẽ có sẵn cho các tập lệnh PHP của bạn dưới dạng mảng nhưng cookie riêng biệt được lưu trữ trên hệ thống của người dùng. Xem xét Explode () để đặt một cookie với nhiều tên và giá trị. Không nên sử dụng serialize () cho mục đích này, bởi vì nó có thể dẫn đến các lỗ hổng bảo mật.explode() to set one cookie with multiple names and values. It is not recommended to use serialize() for this purpose, because it can result in security holes.

Nhiều cuộc gọi đến setcookie () được thực hiện theo thứ tự được gọi.setcookie() are performed in the order called.

Xem thêm

  • Tiêu đề () - Gửi tiêu đề HTTP thô
  • setrawcookie () - Gửi cookie mà không cần mã hóa giá trị cookie
  • phần cookie
  • »& NBSP; RFC 6265
  • »& NBSP; RFC 2109

Walterquez ¶

10 năm trước

$secure8

Bachsau ¶

10 năm trước

$secure9

false0

false1

false2

false3

false4

Bachsau ¶

Ẩn danh ¶

false5

false6

false4

2 năm trước

Paul Nospam tại Nospam SitePoint Dot Com ¶

false8

false9

$httponly0

false4

15 năm trước

Nacho tại Casinelli Dot Com ¶

$httponly2

$httponly3

false4

5 năm trước

Paul Nospam tại Nospam SitePoint Dot Com ¶

$httponly5

$httponly6

$httponly7

$httponly8

false4

Bachsau ¶

Paul Nospam tại Nospam SitePoint Dot Com ¶

false0

false1

false2

false3

15 năm trước

Nacho tại Casinelli Dot Com ¶

5 năm trước

false5

false6

false7

false4

Gabe tại fijiwebdesign dot com ¶

false4

false9

$name00

$name01

$name02

$name03

false4

Mrxcol ¶

Paul Nospam tại Nospam SitePoint Dot Com ¶

$name05

15 năm trước

Ẩn danh ¶

$name06

$name07

$name08

false4

2 năm trước

Nacho tại Casinelli Dot Com ¶

$name10

$name11

$name12

$name13

$name14

$name15

$name16

$name17

false4

5 năm trước

Gabe tại fijiwebdesign dot com ¶

$name19

false4

Mrxcol ¶

$name20

$name21

$name22

false4

11 năm trước

byz ¶

$name24

$name25

false4

6 năm trước

bluewaterbob ¶

$name27

$name28

$name29

$name30

$name31

$name32

$name33

Người dùng tại ASGREEX.com

Paul Nospam tại Nospam SitePoint Dot Com ¶

$name34

false2

$name36

$name37

15 năm trước

Paul Nospam tại Nospam SitePoint Dot Com ¶

$name38

$name39

false4

Bachsau ¶

bluewaterbob ¶

$name41

$name42

$name43

false4

Bachsau ¶

Ẩn danh ¶

$name45

2 năm trước

Paul Nospam tại Nospam SitePoint Dot Com ¶

$name46

$name47

false4

15 năm trước

5 năm trước

$name49

$name50

$name51

$name52

false4

Gabe tại fijiwebdesign dot com ¶

bluewaterbob ¶

$name54

$name55

false4

Người dùng tại ASGREEX.com

5 năm trước

$name57

$name58

$name59

$name60

Bachsau ¶

Ẩn danh ¶

$name61

$name62

$name63

$name64

false4

2 năm trước

Paul Nospam tại Nospam SitePoint Dot Com ¶

$name66

$name67

false4

15 năm trước

15 năm trước

$name69

$name70

$name71

$name72

Jonathan Dot Bergeron tại rve dot ulaval dot ca ¶

15 năm trước

$name73

$name74

$name75

false4

Chris tại Styl Dot EE ¶

11 năm trước

$name77

$name78

$name79

$name80

$name81

false4

Laffen ¶

13 năm trước

$name83

$name84

$name85

false4

isooik tại gmail-antispam dot com ¶

14 năm trước

$name87

$name88

$name89

$name90

bocian941 tại pawno dot pl ¶

11 năm trước

$name91

$name92

$name93

$name94

Laffen ¶

13 năm trước

$name95

isooik tại gmail-antispam dot com ¶

14 năm trước

$name96

$name97

$name98

$name99

$value00

$value01

false4