33

setcookie()同じCookie名で2回呼び出すと、2つのCookieが作成されます。

既存のCookieをどのように更新しますか?

4

5 に答える 5

43

setcookie() 関数を使用して Cookie 値を更新できますが、同じ名前の別の Cookie を作成しないように、「パス」引数である 4 番目の引数に「/」を追加する必要があります。

すなわちsetcookie('cookie_name', 'cookie_value', time()+3600, '/');

3 番目の引数の推奨有効期限:

  • $exp_time = time()+3600; /* 1 時間で有効期限が切れます */
  • $exp_time = time()+86400; /* 1 日で有効期限が切れます */
于 2013-06-24T14:43:34.853 に答える
23

Cookie 自体を更新することはできませんが、上書きすることはできます。それ以外の場合、これはあなたが探しているものです: http://php.net/manual/en/function.setcookie.php

できます。そのページの「よくある落とし穴」を必ずお読みください。

スーパーグローバル$_COOKIE['cookie_name']を使用して Cookie を読み取ることもできます。

于 2011-06-27T00:04:08.267 に答える
5

したがって、PHPは2つのSet-Cookie:ヘッダーを送信しますが、そのように指示された場合は、最後の1つだけがブラウザーに保持されます。
NetscapeのCookie仕様http://curl.haxx.se/rfc/cookie_spec.htmlによると:

同じパスと名前のインスタンスは、最新のインスタンスが優先されて、互いに上書きされます。同じパスで名前が異なるインスタンスは、追加のマッピングを追加します。

ただし、このようなエッジ条件を回避することをお勧めします。すでに送信されたCookieを上書きする必要がないように、アプリケーションを再構築します。

于 2011-06-27T00:08:08.750 に答える
-2

COOKIE を呼び出し、ユーザー名の値を削除します SETCOOKIE("username",'',0,"/");

于 2015-05-21T21:16:32.660 に答える