1

私はウェブサイトを持っています、それを呼びましょうwww.example.comそのウェブサイトには2つのページがあります。次のようなCookieを作成します。

setcookie('daCookie', 'boo', 2000000000, '/', '', false, true);

そしてもう1つは、次のように削除しようとします。

setcookie('daCookie', '', 1, '/', 'www.example.com', false, true);
setcookie('daCookie', '', 1, '/', '.www.example.com', false, true);

これで、最初のスクリプトがのコンテキストで呼び出されたことがわかりwww.example.comました。ブラウザ(この場合はGoogle Chrome)の開発者ツールを使用すると、Cookieのドメインがであることがわかりますwww.example.com。ただし、2回目の呼び出しでは削除されません。空のドメインに変更した場合:

setcookie('daCookie', '', 1, '/', '', false, true);

その後、それは動作します。しかし、私は本当にドメインを明示的に指定したいと思います。なぜそれが機能しないのですか?

4

2 に答える 2

3

私は2番目の呼び出し(明示的にドメイン名を渡す)を信じていますが、ブラウザーはそのドメインであるため、値の前にドット(。)を付けることがあります。そのため、その呼び出しは以前に設定されたCookieを削除しません($ domainパラメーターを渡さない)。

于 2012-04-15T22:20:02.027 に答える
0

phpマニュアルから、すべての例(明示的にドメインを渡す)はこれを使用します:

setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);

ドメインパラメータを明示的に渡す場合は、「www」を無視するのが最善のように見えます。

また、ドメインパラメータに関して次のように述べています。

Cookieを利用できるドメイン。ドメインを「www.example.com」に設定すると、wwwサブドメイン以上のサブドメインでCookieを使用できるようになります。'example.com'などの下位ドメインで利用可能なCookieは、'www.example.com'などの上位サブドメインで利用可能になります。非推奨の»RFC2109をまだ実装している古いブラウザでは、先頭に。が必要な場合があります。すべてのサブドメインに一致します。

于 2012-04-15T22:30:17.350 に答える