2012-01-30 5 views
1

(ドメインlocaldev.xxx.comと私のローカルマシン上でテスト)私は6ヶ月の時間に期限切れとなるブラウザでクッキーを設定するには、次のコードを使用します。クッキーがすぐに期限切れになるのはなぜですか?私のコードで

$cookieExpiresOn = time() + (60 * 60 * 24 * 184); 
setcookie("ref", "somevalue", $cookieExpiresOn); 

しかし私がチェックしたときにSet-Cookieヘッダーが1月1970

Set-Cookie: ref=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; 

の第一に設定された日付を持って放火犯を使用してHTTPレスポンスは、UNIXエポック時間から現在の日付と時刻を返すことになってtime()関数ではありませんか?なぜこうなった?

+3

「ref = deleted」を入力しましたか?サンプルコードでは、代わりに "somevalue"と表示されます。おそらく、後のコード行がクッキーを再設定するでしょうか? – Thilo

+0

ただ簡単なテストです:refを_refに変更して、そのセットがアプリのrefのどこかにある可能性が常に上書きされているかどうかを確認してください。 –

+0

time()関数はときどき気まぐれです。ときには時間を費やしたり、変数内で何を定義したりすることができますが、時にはそれを自分の変数としてtime()を定義することができない場合もあります。あなたのcooieExpiresOnが本当に何であるかをダブルチェックしてください。多分その数字が範囲外です。それで、何かにデフラルトしてしまいますが、動作しません。 – chris

答えて

5

問題が何かを発見しました。私の実際のコードでは値がそうのような変数を使用して設定されていました:

setcookie("ref", $varx, $cookieExpiresOn); 

どうやらもしクッキーの値は、PHPの試みは、現在のGMT時間の前にその期限が切れる日付を設定することにより、クッキーを削除するには、空の文字列です。

関連する問題