2012-04-19 25 views
8

Tôi cần đặt cookie hết hạn sau 1 giờ sử dụng chức năng setcookie PHP. Múi giờ trên máy chủ của tôi được đặt thành GMT. Tôi nên đặt ngày hết hạn của cookie như thế nào để làm cho nó hoạt động trên các múi giờ trình duyệt của khách hàng khác nhau?Múi giờ của cookie được lưu trữ ở phía khách hàng là gì?

+1

@DonCallisto ông có thể không có câu trả lời mà ông cần cho hầu hết các câu hỏi của mình. – noob

+0

Cảm ơn mọi người, cả hai nhận xét đều hữu ích. Thật vậy, tôi không có câu trả lời tôi cần, nhưng rất tốt để nhớ về nó. – Karol

+1

Bạn có thể tìm thấy ['$ cookie-> setExpiryTime ($ expiryTime)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L80) hoặc ['$ cookie-> setMaxAge ($ maxAge) '] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L92) hữu ích, như được tìm thấy trong [thư viện độc lập này] (https://github.com/delight-im/PHP-Cookie). – caw

Trả lời

7

gần như tôi có thể nói nó không quan trọng thời gian của khách hàng là gì. PHP đặt thời gian hết hạn dựa trên mã thời gian unix. Bất kỳ biến thể nào trong thời gian đó phải nằm cùng với máy chủ.

Dưới đây là đoạn trích từ PHP manual cho setcookie():

hết hạn:

Hiện cookie hết hạn. Đây là một dấu thời gian Unix vì vậy là trong số giây kể từ thời đại. Nói cách khác, bạn có nhiều khả năng là đặt cài đặt này với hàm time() cộng với số giây trước bạn muốn nó hết hạn. Hoặc bạn có thể sử dụng mktime(). time() + 60 * 60 * 24 * 30 sẽ đặt cookie hết hạn sau 30 ngày. Nếu được đặt thành 0 hoặc bị bỏ qua, cookie sẽ hết hạn vào cuối phiên (khi trình duyệt đóng).

0

Bạn có thể thử với getTimeZonesetTimeZone Hãy xem here

Cũng strtotime có vẻ là tốt cho retrive định dạng đúng của datetime, sau đó bạn có thể sử dụng gmdate cho chuyển đổi nó

0

Giả sử bạn sử dụng cookie được đặt.

Tôi có thể sai nhưng tôi nghĩ rằng:

Bạn cung cấp các thông số hết hạn như một dấu thời gian Unix, và bạn tính toán dấu thời gian như "trong một giờ", vì vậy bạn muốn cookie hết hạn trong một giờ. Vì vậy, không quan tâm về múi giờ vì dấu thời gian unix là rõ ràng.

Sau đó, nhiệm vụ của trình duyệt là để dịch các dấu thời gian unix trong một ngày dựa trên các thiết lập bowser (miền địa phương, ngôn ngữ và vân vân)

5

setcookie() chức năng của PHP chấp nhận một số nguyên tương ứng với một giá trị timestamp Unix. Nếu cookie của bạn nên có thời gian sống 1 giờ, bạn chỉ có thể sử dụng thời gian() + 3600 cho giá trị đó. PHP sau đó sẽ tạo một cookie với thời gian hết hạn như "hết hạn = Thứ Sáu, 3 tháng 8 năm 2001 20:47:11 UTC". Đó là trong UTC (GMT), do đó bạn không phải lo lắng về múi giờ của trình duyệt của khách hàng

Các vấn đề liên quan