2011-06-26 68 views
17

如果我用相同的cookie名稱撥打setcookie()兩次,我會創建兩個Cookie。如何更新PHP中的cookie?

如何更新現有的cookie?

+3

您是如何確認您獲得兩個餅乾的? – deceze

+0

我右鍵 - >編輯站點首選項 - >餅乾(歌劇),在那裏我看到很多具有相同的名稱 – Cookie

回答

16

您不能更新一個cookie本身,但是,您可以將其覆蓋。 否則,這是你在找什麼:http://php.net/manual/en/function.setcookie.php

它的工作原理。請務必閱讀該頁面上的「常見陷阱」。

您可以使用超級全球$_COOKIE['cookie_name']以及讀/寫的cookie。

+5

餅乾,但它不工作:(('set_cookie(「fuuuuu」,蘭特(0,3434543) ,$ exp_date);',刷新後我得到另一個具有相同名稱,不同值的cookie:| – Cookie

+1

它們是否來自同一個域?www或no-www計數。 – Francisc

+0

hmm我沒有設置域參數..但是餅乾是從 – Cookie

4

因此,儘管PHP將派兩名的Set-Cookie:頭文件,如果指示的話,只有最後一個應該在瀏覽器中存在。
網景的cookie規範http://curl.haxx.se/rfc/cookie_spec.html說:

相同的路徑和名稱的實例會相互覆蓋,用最新的實例採取優先次序。路徑相同但名稱不同的實例將添加其他映射。

然而,也許應該避免這樣的邊界條件。重新構建您的應用程序,以便它不需要覆蓋已發送的cookie。

16

您可以使用setcookie()函數更新cookie值,但您應該在第4個參數(即「路徑」參數)中添加'/',以防止創建具有相同名稱的另一個cookie。

setcookie('cookie_name', 'cookie_value', $exp_date, '/');

0

呼叫COOKIE和刪除用戶名值 setCookie方法( 「用戶名」, '',0, 「/」);