(Php 4, Php 5, Php 7, Php 8)
setcookie - Gửi cookie — Send 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 $name
2 = []): bool(string
$name
, string $value
= "", array $name
2 = []): 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.
$name
3 Tên của cookie.
$name
4 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ử $name
3 là $name
6, giá trị này được lấy thông qua $ _cookie ['cookiename']]]
$name
7 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, $name
8 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 $name
9 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, $name
8 will set the cookie to expire in 30 days. Another option is to use the mktime() function. If set to $name
9, 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ố $name
7 có dấu thời gian UNIX, trái ngược với định dạng ngày $value
1, điều này là do PHP thực hiện chuyển đổi này trong nội bộ.
$value
2 Đường dẫn trên máy chủ trong đó cookie sẽ có sẵn. Nếu được đặt thành $value
3, cookie sẽ có sẵn trong toàn bộ $value
4. Nếu được đặt thành $value
5, cookie sẽ chỉ có sẵn trong thư mục $value
6 và tất cả các thư mục phụ như $value
7 của $value
4. Giá trị mặc định là thư mục hiện tại mà cookie đang được đặt vào.
$value
4 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_options
0) 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_options
1, 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_options
2 hàng đầu để phù hợp với tất cả các tên miền phụ.
$expires_or_options
3 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_options
4, 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_options
4, 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_options
5 Khi $expires_or_options
4 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_options
4 hoặc false
$expires_or_options
4 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_options
4 or false
$expires_or_options
9 Một mảng kết hợp có thể có bất kỳ khóa $path
0, $value
2, $value
4, $expires_or_options
3, $expires_or_options
5 và $path
5. Nếu bất kỳ khóa nào khác được trình bày một lỗi của cấp $path
6 đượ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ử $path
5 phải là $path
8, $path
9 hoặc $domain
0. 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ử $path
5 bị bỏ qua, không có thuộc tính cookie SameTeite được đặt.array which may have any of the keys $path
0, $value
2, $value
4, $expires_or_options
3, $expires_or_options
5 and $path
5. If any other key is present an error of level $path
6 is generated. The values have the same meaning as described for the parameters with the same name. The value of the $path
5 element should be either $path
8, $path
9 or
$domain
0. 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 $path
5 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_options
4. Đ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_options
4. This does not indicate whether the user accepted the cookie.
Thay đổi
Phiên bản | Sự mô tả |
---|
7.3.0 | Một chữ ký thay thế hỗ trợ một mảng $expires_or_options 9 đã đượ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
$domain
5
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:
$domain
6
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:
$domain
7
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:
$domain
8
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ư $domain
9 và $secure
0 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 $domain
9 and $secure
0 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 $secure
1 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 $secure
1 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ố
$name
7. 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 $secure
3. - 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
$secure
4 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_options
4.false
will try to delete the cookie, you should not use boolean values. Instead, use 0
for false
and 1 for $expires_or_options
4. - 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
$secure
8
Bachsau ¶ ¶
10 năm trước
$secure
9
false
0
false
1
false
2
false
3
false
4 Bachsau ¶ ¶
Ẩn danh ¶
false
5
false
6
false
4 2 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
false
8
false
9
$httponly
0
false
4 15 năm trước ¶
Nacho tại Casinelli Dot Com ¶
$httponly
2
$httponly
3
false
4 5 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$httponly
5
$httponly
6
$httponly
7
$httponly
8
false
4Bachsau ¶ ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
false
0
false
1
false
2
false
3
15 năm trước Nacho tại Casinelli Dot Com ¶ ¶
5 năm trước
false
5
false
6
false
7
false
4
Gabe tại fijiwebdesign dot com ¶ ¶
false
4
false
9
$name
00
$name
01
$name
02
$name
03
false
4 Mrxcol ¶ ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$name
05
15 năm trước ¶
Ẩn danh ¶
$name
06
$name
07
$name
08
false
4
2 năm trước ¶
Nacho tại Casinelli Dot Com ¶
$name
10
$name
11
$name
12
$name
13
$name
14
$name
15
$name
16
$name
17
false
4 5 năm trước ¶
Gabe tại fijiwebdesign dot com ¶
$name
19
false
4 ¶
Mrxcol ¶
$name
20
$name
21
$name
22
false
4 11 năm trước ¶
byz ¶
$name
24
$name
25
false
4
6 năm trước ¶
bluewaterbob ¶
$name
27
$name
28
$name
29
$name
30
$name
31
$name
32
$name
33 Người dùng tại ASGREEX.com ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$name
34
false
2
$name
36
$name
37 15 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$name
38
$name
39
false
4
Bachsau ¶ ¶
bluewaterbob ¶
$name
41
$name
42
$name
43
false
4 Bachsau ¶ ¶
Ẩn danh ¶
$name
45
2 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$name
46
$name
47
false
4
15 năm trước ¶
5 năm trước
$name
49
$name
50
$name
51
$name
52
false
4 Gabe tại fijiwebdesign dot com ¶ ¶
bluewaterbob ¶
$name
54
$name
55
false
4 Người dùng tại ASGREEX.com ¶
5 năm trước
$name
57
$name
58
$name
59
$name
60 Bachsau ¶ ¶
Ẩn danh ¶
$name
61
$name
62
$name
63
$name
64
false
4 2 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$name
66
$name
67
false
4 15 năm trước ¶
15 năm trước
$name
69
$name
70
$name
71
$name
72 Jonathan Dot Bergeron tại rve dot ulaval dot ca ¶ ¶
15 năm trước
$name
73
$name
74
$name
75
false
4 Chris tại Styl Dot EE ¶ ¶
11 năm trước
$name
77
$name
78
$name
79
$name
80
$name
81
false
4
Laffen ¶ ¶
13 năm trước
$name
83
$name
84
$name
85
false
4 isooik tại gmail-antispam dot com ¶ ¶
14 năm trước
$name
87
$name
88
$name
89
$name
90 bocian941 tại pawno dot pl ¶ ¶
11 năm trước
$name
91
$name
92
$name
93
$name
94 Laffen ¶ ¶
13 năm trước
$name
95
isooik tại gmail-antispam dot com ¶ ¶
14 năm trước
$name
96
$name
97
$name
98
$name
99
$value
00
$value
01
false
4