Đối với người mới bắt đầu, các mệnh đề nếu bạn là dự phòng, khiến việc kiểm tra quy trình làm việc khó khăn hơn, làm chúng tôi cũng như cho bạn.
if [isset[$_POST['remember']]]
{
$checkbox = 'remember_me';
}
theo dõi bởi
if[$checkbox == 'remember_me']
cũng như
elseif [!$_POST['remember']]
Sử dụng cả hai, giá trị thực tế trong mảng $ _POST, cũng như cờ kiểm tra Set Tùy chỉnh của bạn, thực sự được đặt bởi mảng $ _POST.
Ngoài ra, nhìn vào
Tại sao có một giá trị ẩn với cùng tên với hộp kiểm? Bạn đang làm gì với JS? Tôi có thể tưởng tượng một số vấn đề bóng tối ở đây.
Tiếp theo, một khi mã được làm sạch một chút, một câu hỏi được đặt ra ngay lập tức: Tại sao bạn lại xóa cookie nếu tùy chọn "Ghi nhớ" không được đặt?
$do_remember = isset[$_POST['remember']];
//Use a timespan of 1 week
$remembering_timespan = time[] + 7 * 24 * 60 * 60;
if [$do_remember]
{
setcookie['remember_me', $_POST['username'], $remembering_timespan];
} else {
//This is where i don't see why you are deleting a cookie
}
Nếu bạn chỉ sử dụng khối mã này trên bộ xử lý mẫu đăng nhập, không có lý do gì để đăng nhập bất cứ ai. Thay vào đó, bạn nên đặt một cookie ngắn hơn hoặc phiên.out. Instead, you should set a shorter or session cookie.
Để tạo cookie phiên [tự xóa sau thời gian/phiên điều khiển bằng trình duyệt], chỉ cần bỏ tham số hết hạn hoặc đặt thành 0.
Netx ou cho biết, cookie đã không ở đó nữa khi bạn xem lại trang web sau vài giờ. Bạn đã đóng/mở lại trình duyệt? Bạn đã đăng nhập ở nơi đầu tiên?
Gợi ý duy nhất của tôi có thể là bạn đang sử dụng khối mã trên trên mỗi trang và một khi bạn không đến từ trang đăng nhập, không có $ _POST ['nhớ'] được đặt, dẫn đến trường hợp bạn phá hủy cookienot come from the login page, no $_POST['remember'] is set, leading to the case where you destroy the cookie
bocian941 tại pawno dot pl ¶
J? Rg Aldinger ¶ — Send a cookie
19 năm trước
3 năm trước[
string $name
,
string $value
= "",
int $expires_or_options
=
0,
string $path
= "",
string
0 = "",if[$checkbox == 'remember_me']
bool
1 = if[$checkbox == 'remember_me']
2,if[$checkbox == 'remember_me']
bool
3 = if[$checkbox == 'remember_me']
2if[$checkbox == 'remember_me']
]: bool
PHP có thể đặt cookie không?[string
$name
, string $value
= "", array
7 = []]: boolif[$checkbox == 'remember_me']
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. Tên của cookie được tự động được gán cho một biến cùng tên.
Điều nào sau đây sẽ đặt cookie hết hạn trong 30 ngày?
Time []+60*60*24*30 sẽ đặt cookie hết hạn sau 30 ngày. Nếu không được đặt, cookie sẽ hết hạn vào cuối phiên [khi trình duyệt đóng]. Đường dẫn trên máy chủ trong đó cookie sẽ có sẵn.setcookie[] parameter is interpreted.
Chúng ta có thể đặt nhiều giá trị trong một cookie trong PHP không?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.
Quy tắc đặt cookie trong PHP là gì?Quy tắc đặt cookie trong PHP là gì? Hàm setCookie [] định nghĩa một cookie sẽ được gửi cùng với phần còn lại của các tiêu đề HTTP. 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.
[Php 4, Php 5, Php 7, Php 8]setcookie - Gửi cookietime[]. For instance,
elseif [!$_POST['remember']]
3 will set the cookie to expire in 30 days. Another option is to use the mktime[] function. If set to elseif [!$_POST['remember']]
4, or omitted, the cookie will expire at the end of the session [when the browser closes]. setCookie [chuỗiSự mô tả:
setCookie [& nbsp; & nbsp; & nbsp; & nbsp; chuỗi ____ ____ 6, & nbsp; & nbsp; & nbsp; & nbsp; chuỗi
$value
= "" = "", & nbsp; & nbsp;
$name
, chuỗi $value
= "", mảng if[$checkbox == 'remember_me']
7 = []]: boolKhi 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 [].
Các trình duyệt cũ hơn vẫn triển khai »& NBSP; RFC 2109 có thể yêu cầu hàng đầu
7 để phù hợp với tất cả các tên miền phụ.
8Chỉ 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
9, 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"]].
9, 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"]]. $do_remember = isset[$_POST['remember']];
//Use a timespan of 1 week
$remembering_timespan = time[] + 7 * 24 * 60 * 60;
if [$do_remember]
{
setcookie['remember_me', $_POST['username'], $remembering_timespan];
} else {
//This is where i don't see why you are deleting a cookie
}
0Khi
9 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.
9 hoặc if[$checkbox == 'remember_me']
2
9 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.
9 or if[$checkbox == 'remember_me']
2 $do_remember = isset[$_POST['remember']];
//Use a timespan of 1 week
$remembering_timespan = time[] + 7 * 24 * 60 * 60;
if [$do_remember]
{
setcookie['remember_me', $_POST['username'], $remembering_timespan];
} else {
//This is where i don't see why you are deleting a cookie
}
4Một mảng kết hợp có thể có bất kỳ khóa
$do_remember = isset[$_POST['remember']];
//Use a timespan of 1 week
$remembering_timespan = time[] + 7 * 24 * 60 * 60;
if [$do_remember]
{
setcookie['remember_me', $_POST['username'], $remembering_timespan];
} else {
//This is where i don't see why you are deleting a cookie
}
5, elseif [!$_POST['remember']]
7, elseif [!$_POST['remember']]
9,
8, $do_remember = isset[$_POST['remember']];
//Use a timespan of 1 week
$remembering_timespan = time[] + 7 * 24 * 60 * 60;
if [$do_remember]
{
setcookie['remember_me', $_POST['username'], $remembering_timespan];
} else {
//This is where i don't see why you are deleting a cookie
}
0 và three : cookiethree two : cookietwo one : cookieone0. Nếu bất kỳ khóa nào khác được trình bày một lỗi của cấp
three : cookiethree two : cookietwo one : cookieone1 đượ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ử
three : cookiethree two : cookietwo one : cookieone0 phải là
three : cookiethree two : cookietwo one : cookieone3,
three : cookiethree two : cookietwo one : cookieone4 hoặc
three : cookiethree two : cookietwo one : cookieone5. 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ử
three : cookiethree two : cookietwo one : cookieone0 bị bỏ qua, không có thuộc tính cookie SameTeite được đặt.array which may have any of the keys
$do_remember = isset[$_POST['remember']];
//Use a timespan of 1 week
$remembering_timespan = time[] + 7 * 24 * 60 * 60;
if [$do_remember]
{
setcookie['remember_me', $_POST['username'], $remembering_timespan];
} else {
//This is where i don't see why you are deleting a cookie
}
5, elseif [!$_POST['remember']]
7, elseif [!$_POST['remember']]
9,
8, $do_remember = isset[$_POST['remember']];
//Use a timespan of 1 week
$remembering_timespan = time[] + 7 * 24 * 60 * 60;
if [$do_remember]
{
setcookie['remember_me', $_POST['username'], $remembering_timespan];
} else {
//This is where i don't see why you are deleting a cookie
}
0 and three : cookiethree two : cookietwo one : cookieone0. If any other key is present an error of level
three : cookiethree two : cookietwo one : cookieone1 is generated. The values have the same meaning as described for the parameters with the same name. The value of the
three : cookiethree two : cookietwo one : cookieone0 element should be either
three : cookiethree two : cookietwo one : cookieone3,
three : cookiethree two : cookietwo one : cookieone4 or
three : cookiethree two : cookietwo one : cookieone5. 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
three : cookiethree two : cookietwo one : cookieone0 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ề
if[$checkbox == 'remember_me']
2. Nếu setcookie [] chạy thành công, nó sẽ trả lại
9. Đ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 if[$checkbox == 'remember_me']
2. If
setcookie[] successfully runs, it will return
9. This does not indicate whether the user accepted the cookie. Thay đổi
7.3.0 | Một chữ ký thay thế hỗ trợ một mảng 4 đã đượ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
$name
0
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:
$name
1
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:
$name
2
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:
$name
3
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ư
$name
4 và$name
5 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$name
4 and$name
5 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ể thực hiện đ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
$name
6 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$name
6 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ố
2. Một cách tốt đẹp để gỡ lỗi sự tồn tại của cookie là bằng cách gọielseif [!$_POST['remember']]
$name
8. - 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
$name
9 và thời gian hết hạn trong quá khứ. - Vì đặt cookie có giá trị
2 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 choif[$checkbox == 'remember_me']
2 và 1 choif[$checkbox == 'remember_me']
9.
2 will try to delete the cookie, you should not use boolean values. Instead, use 0 forif[$checkbox == 'remember_me']
2 and 1 forif[$checkbox == 'remember_me']
9. - 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
$value
3
Bachsau ¶ ¶
10 năm trước
$value
4
$value
5
$value
6
$value
7
$value
8
$value
9Bachsau ¶ ¶
Ẩn danh ¶
$expires_or_options
0
$expires_or_options
1
$value
92 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$expires_or_options
3
$expires_or_options
4
$expires_or_options
5
$value
915 năm trước ¶
Nacho tại Casinelli Dot Com ¶
$expires_or_options
7
$expires_or_options
8
$value
95 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$path
0
$path
1
$path
2
$path
3
$value
9Bachsau ¶ ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
$path
5
$path
6
$path
7
$path
8
Nacho tại Casinelli Dot Com ¶ ¶
5 năm trước
if[$checkbox == 'remember_me']
00if[$checkbox == 'remember_me']
01if[$checkbox == 'remember_me']
02if[$checkbox == 'remember_me']
03if[$checkbox == 'remember_me']
04$value
9Gabe tại fijiwebdesign dot com ¶ ¶
Ẩn danh ¶
if[$checkbox == 'remember_me']
06if[$checkbox == 'remember_me']
07if[$checkbox == 'remember_me']
08$value
92 năm trước ¶
Nacho tại Casinelli Dot Com ¶
if[$checkbox == 'remember_me']
10if[$checkbox == 'remember_me']
11if[$checkbox == 'remember_me']
12if[$checkbox == 'remember_me']
13if[$checkbox == 'remember_me']
14if[$checkbox == 'remember_me']
15if[$checkbox == 'remember_me']
16if[$checkbox == 'remember_me']
17$value
95 năm trước ¶
Gabe tại fijiwebdesign dot com ¶
if[$checkbox == 'remember_me']
19 $path
9 ¶
byz ¶
if[$checkbox == 'remember_me']
20if[$checkbox == 'remember_me']
21if[$checkbox == 'remember_me']
22$value
96 năm trước ¶
Người dùng tại ASGREEX.com
if[$checkbox == 'remember_me']
24if[$checkbox == 'remember_me']
25if[$checkbox == 'remember_me']
26$value
9lferro9000 tại gmail dot com ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
15 năm trước
Nacho tại Casinelli Dot Com ¶ ¶
5 năm trước
if[$checkbox == 'remember_me']
29if[$checkbox == 'remember_me']
30$value
9Gabe tại fijiwebdesign dot com ¶ ¶
$path
9
if[$checkbox == 'remember_me']
32if[$checkbox == 'remember_me']
33if[$checkbox == 'remember_me']
34if[$checkbox == 'remember_me']
35if[$checkbox == 'remember_me']
36if[$checkbox == 'remember_me']
37if[$checkbox == 'remember_me']
38byz ¶ ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
if[$checkbox == 'remember_me']
39$path
7
if[$checkbox == 'remember_me']
41if[$checkbox == 'remember_me']
4215 năm trước ¶
Người dùng tại ASGREEX.com
if[$checkbox == 'remember_me']
43if[$checkbox == 'remember_me']
44$value
9Bachsau ¶ ¶
Ẩn danh ¶
if[$checkbox == 'remember_me']
46Bachsau ¶ ¶
Ẩn danh ¶
if[$checkbox == 'remember_me']
47if[$checkbox == 'remember_me']
48if[$checkbox == 'remember_me']
49$value
92 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
if[$checkbox == 'remember_me']
51if[$checkbox == 'remember_me']
52$value
915 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
if[$checkbox == 'remember_me']
54if[$checkbox == 'remember_me']
55$value
915 năm trước ¶
byz ¶
if[$checkbox == 'remember_me']
57if[$checkbox == 'remember_me']
58if[$checkbox == 'remember_me']
59if[$checkbox == 'remember_me']
60$value
96 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
if[$checkbox == 'remember_me']
62if[$checkbox == 'remember_me']
63if[$checkbox == 'remember_me']
64if[$checkbox == 'remember_me']
6515 năm trước ¶
byz ¶
if[$checkbox == 'remember_me']
66if[$checkbox == 'remember_me']
67if[$checkbox == 'remember_me']
68if[$checkbox == 'remember_me']
696 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
if[$checkbox == 'remember_me']
70if[$checkbox == 'remember_me']
71if[$checkbox == 'remember_me']
72$value
915 năm trước ¶
Ẩn danh ¶
if[$checkbox == 'remember_me']
74if[$checkbox == 'remember_me']
75$value
92 năm trước ¶
byz ¶
if[$checkbox == 'remember_me']
77if[$checkbox == 'remember_me']
78if[$checkbox == 'remember_me']
79if[$checkbox == 'remember_me']
80if[$checkbox == 'remember_me']
81$value
96 năm trước ¶
$path
9
if[$checkbox == 'remember_me']
83if[$checkbox == 'remember_me']
84if[$checkbox == 'remember_me']
85$value
9Bachsau ¶ ¶
Ẩn danh ¶
if[$checkbox == 'remember_me']
87if[$checkbox == 'remember_me']
88if[$checkbox == 'remember_me']
89if[$checkbox == 'remember_me']
90$value
92 năm trước ¶
Paul Nospam tại Nospam SitePoint Dot Com ¶
if[$checkbox == 'remember_me']
92if[$checkbox == 'remember_me']
93if[$checkbox == 'remember_me']
94if[$checkbox == 'remember_me']
9515 năm trước ¶
byz ¶
if[$checkbox == 'remember_me']
96if[$checkbox == 'remember_me']
97if[$checkbox == 'remember_me']
98if[$checkbox == 'remember_me']
996 năm trước ¶
Người dùng tại ASGREEX.com
elseif [!$_POST['remember']]
00Bachsau ¶ ¶
Ẩn danh ¶
elseif [!$_POST['remember']]
01elseif [!$_POST['remember']]
02elseif [!$_POST['remember']]
03elseif [!$_POST['remember']]
04elseif [!$_POST['remember']]
05elseif [!$_POST['remember']]
06$value
9