10

PHPのsetcookie関数を使用して1時間後に期限切れになるCookieを設定する必要があります。サーバーのタイムゾーンがGMTに設定されています。異なるクライアントのブラウザのタイムゾーンで機能するようにするには、Cookieの有効期限をどのように設定する必要がありますか?

4

4 に答える 4

9

私が知る限り、クライアントの時間は関係ありません。PHPは、UNIXタイムコードに基づいて有効期限を設定します。その時間の変動はサーバーに存在する必要があります。

setcookie()のPHPマニュアルからの抜粋は次のとおりです。

期限切れ:

Cookieの有効期限が切れる時間。これはUnixタイムスタンプであるため、エポックからの秒数です。つまり、time()関数に、有効期限が切れるまでの秒数を加えて設定する可能性があります。または、mktime()を使用することもできます。time()+ 60 * 60 * 24 * 30は、Cookieが30日で期限切れになるように設定します。0に設定するか省略した場合、Cookieはセッションの終了時(ブラウザが閉じたとき)に期限切れになります。

于 2012-04-19T13:07:46.820 に答える
5

PHPのsetcookie()関数は、Unixタイムスタンプ値に対応する整数を受け入れます。Cookieの存続時間が1時間である必要がある場合は、その値にtime()+3600を使用できます。次に、PHPは、「expires = Fri、2001年8月3日20:47:11UTC」のような有効期限を持つCookieを作成します。UTC(GMT)であるため、クライアントブラウザのタイムゾーンについて心配する必要はありません。

于 2012-04-19T15:59:09.860 に答える
0

試してみてgetTimeZoneここsetTimeZone を見てください

また、 strtotimeは、datetimeの正しい形式を取得するのに問題がないようです。その後、gmdateを使用して変換できます。

于 2012-04-19T13:02:42.517 に答える
0

setcookieを使用するとします。

私は間違っているかもしれませんが、私は思います:

期限切れパラメータをUnixタイムスタンプとして指定し、タイムスタンプを「1時間以内」として計算するため、Cookieを1時間以内に期限切れにする必要があります。したがって、UNIXタイムスタンプは明確であるため、タイムゾーンについては気にしないでください。

次に、ブラウザのタスクは、クッパの設定(ロケール、言語など)に基づいてUNIXタイムスタンプを日付に変換することです。

于 2012-04-19T13:11:39.120 に答える