2012-04-19 94 views
8

我需要設置cookie,使用PHP setcookie函數1小時後過期。我的服務器上的時區設置爲GMT。我應該如何設置cookie過期日期,以使其適用於不同客戶的瀏覽器時區?什麼是客戶端存儲cookie的時區?

+1

@DonCallisto他可能沒有得到他需要的答案,他的大部分問題。 – noob 2012-04-19 13:15:37

+0

謝謝你們,這兩條評論都很有用。事實上我沒有得到我需要的答案,但記住它是件好事。 – Karol 2012-04-19 13:49:01

+1

您可能會發現['$ cookie-> setExpiryTime($ expiryTime)'](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L80)或['$ cookie-> setMaxAge($ maxAge)'](https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L92)有幫助,在[這個獨立的庫]中找到( https://github.com/delight-im/PHP-Cookie)。 – caw 2016-09-21 02:43:03

回答

7

近,我可以告訴它應該無所謂客戶端的時間。 PHP根據unix時間碼設置過期時間。任何時間的變化都應該在服務器上。

下面是從PHP manual()的摘錄爲setCookie方法:

到期:

的時間cookie的過期。這是一個Unix時間戳,因此從曆元開始的秒數。換句話說,最有可能的是 用time()函數加上你希望它到期的 之前的秒數。或者你可以使用mktime()。 time()+ 60 * 60 * 24 * 30 將設置cookie在30天內過期。如果設置爲0或省略,則 Cookie將在會話結束時過期(當瀏覽器 關閉時)。

0

你可以嘗試用getTimeZonesetTimeZone 看看here

而且strtotime似乎是罰款retrive日期時間的格式正確,那麼你可以使用gmdate用於將其轉換

0

那麼假設你使用set cookie。

我可能是錯的,但我認爲:

您提供到期參數作爲Unix時間戳,而你計算時間戳爲「一小時」,讓您隨心所欲的cookie來在一個小時內到期。所以不要在意時區,因爲unix時間戳是明確的。

然後,瀏覽器的任務是翻譯的基礎上鮑澤設置(語言環境,語言等)

5

PHP的的setcookie()函數接受對應於Unix時間戳值的整數日期的Unix時間戳。如果您的Cookie應該有1小時的生活時間,那麼您可以使用time()+ 3600作爲該值。然後PHP將創建一個有效期過期的cookie,如「expires = Fri,2001年8月3日20:47:11 UTC」。這是在UTC(格林威治標準時間),所以你不必擔心客戶端瀏覽器的時區