2011-05-06 67 views
2

問候。我在PHP中設置了一個cookie,但它不是用標頭髮送的

我試圖在瀏覽器cookie中保存用戶的會話ID。我一遍又一遍地進行了測試,並且在頭部之前發送的空白或任何其他信息沒有任何問題。

我的應用程序有一個入口點(index.php)並處理查詢字符串來調用控制器/ etc。當我到我的主頁面時,沒有看到cookie,所以它顯示用戶登錄頁面。當我通過XDebug跟蹤這一點時,一旦我點擊提交,哪些POST回到index.php。當此POST回來時,來自先前登錄的cookie將被髮送到頁面!但是,由於它試圖處理POST信息,我的腳本再次設置cookie。當它重定向回主頁(即沒有POST或其他參數的index.php)時,不會發送cookie。

我已經調試過,看遍了整個地方,無法弄清楚,想知道如果有人有任何明智的想法。

注意: 我在setcookie()中設置路徑爲'/'。另外,我使用mod_rewrite和.htaccess來製作SEO友好的URL。不過,我沒有嘗試過它,它似乎並不重要...

代碼段:

這樣寫:

setcookie(self::SESSION_COOKIE, $this->session_id, time()+60*60*24*30, '/', 'localhost');

要訪問:

$_COOKIE[self::SESSION_COOKIE]; 

感謝您的幫助 -

+0

你確定你'輸出任何東西之前會調用'setcookie()函數?如果您已經發送了任何內容,那麼標題已發送,您不能再設置cookie。在這種情況下你應該得到一個警告。 – 2013-12-03 19:17:29

回答

1

檢查path您傳遞給setcookie函數的參數。確保它設置爲'/'(或任何您的應用程序的URI根目錄)。

manual

路徑

其中 的cookie將可在服務器上的路徑。如果設置爲 '/',則Cookie將在整個域中可用 。如果設置爲 '/ foo /',則該cookie將僅在和/或域的所有子目錄(如 /foo/bar /)內可用的 。 默認值爲 是當前目錄的 的cookie被設定。

+0

當我使用setcookie設置cookie時,我將路徑設置爲'/'... – Kyle 2011-05-06 23:42:47

相關問題