2011-04-02 97 views
2

我目前正在開發一個PHP網站。我試圖設置一個cookie來存儲用戶ID。這是爲了登錄系統,我需要用戶ID能夠將它添加到MySQL數據庫中的不同表中。PHP Cookie問題

當用戶成功登錄時,會創建一個php會話和一個cookie,然後使用元標記刷新來指向索引頁。

if ($row = mysql_fetch_array($result)) 
{ 
    setcookie('id', $row['use_id']); 
    $_SESSION['user'] = $username; 
    setcookie('userID', $row['use_id']); 
    echo '<meta http-equiv="refresh" content="0;url=../index.php">'; 
} 

如果我刪除元刷新,只是使用$ _COOKIE [「用戶ID」]它工作正常,但呼應的cookie,當我嘗試使用$ _COOKIE [「用戶ID」] index.php頁面上後,已經完成了元刷新,它沒有顯示任何東西。

任何幫助將不勝感激。謝謝

+2

爲什麼不將刷新作爲標題發送呢?無需使用元標記 - 如果您可以發送Cookie標題,也可以發送刷新標題。 – ThiefMaster 2011-04-02 21:17:34

+0

@ThiefMaster如果我使用標題重定向它的錯誤,因爲我輸出HTML到屏幕 – Boardy 2011-04-02 21:18:59

+1

你在測試什麼瀏覽器?有些瀏覽器僅允許您在POST請求中設置Cookie。 – Naatan 2011-04-02 21:22:19

回答

5
setcookie('userID', $row['use_id'], 0, "/"); 

編輯:零到期時間。

您的cookie對index.php不可見,因爲它已從子目錄中的腳本設置。所以對上層頁面不可見。您應該將cookie路徑(第四個參數)設置爲「/」,並且該cookie將在整個域中可用。

這就是爲什麼你的cookie對index.php不可見的原因。

header('Location: ../index.php'); 
        ^^^ 

您已將頁面重定向到上一級目錄,但您的cookie未設置爲整個域。

+0

'如果設置爲0或省略,則cookie將在會話結束時(當瀏覽器關閉時)過期。刷新頁面並不會關閉瀏覽器,我想這不會是一個解決方案.. – Rihards 2011-04-02 21:20:01

+0

這沒有什麼區別,當你不設定cookie計數瀏覽會話時。 – Naatan 2011-04-02 21:21:23

+1

非常好,這工作正常。它需要具備所有這些參數才能工作。如果我刪除了最後2個參數中的任何一個,出於某種原因它將停止工作。但是,他們很好。再次感謝 – Boardy 2011-04-02 21:29:59

2

如果索引頁目錄高於您設置cookie的目錄,則Cookie將不會在索引頁中可用。我建議你使用位置標題重定向。希望這會幫助你。