2010-01-10 119 views
10

好吧我有一個cookie集,我可以清楚地看到它,如果我去Firefox中的私人數據...好吧,所以當我在它的工作的某個目錄中的一個頁面上回顯它時, www.example.com/dir),但在網站(www.example.com)的索引頁面上,它不會回顯,它表示cookie未設置。是的,我啓用了Cookie,是的,我嘗試清除緩存等等。有任何想法嗎? PHP btw餅乾不在不同的頁面上工作

+0

您可能會發現['$ cookie->的setpath($ PATH)'](https://github.com/delight-im/ PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L104)很有幫助,可以在[這個獨立的庫](https://github.com/delight-im/PHP-Cookie)中找到。 – caw 2016-09-21 02:23:29

回答

17

當cookie被設置時,你處於哪個目錄?

PHP manual on setcookie(),重點煤礦:

路徑

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

2

你需要檢查cookie的設置路徑。

如果不是'/',您的答案是!

15

Cookie可以被綁定到特定的域名,子域名,路徑和協議(HTTP/HTTPS)。你需要指定的路徑在PHP中設置cookie時:

setcookie("TestCookie", "Value", time()+3600 , '/'); 

第四個參數綁定到網站的根,它會在主網站的任何子目錄中可用。

如果你希望它可以在主域和子域的任何,提供第五個參數是這樣的:

setcookie("TestCookie", "Value", time()+3600 , '/', '.example.com'); 

現在,這將是可讀的:

www.example.com
example.com/newdir
awesome.example.com/newdir

+0

在最後加上'/','.example.com'爲我解決了這個問題 – Nate 2014-06-12 04:25:41

0

如果要在所有目錄中訪問它,則需要將$ path設置爲/ in setcookie()

1

設置路徑選項;默認值是設置Cookie的當前目錄。因爲您將cookie設置在目錄/ dir中,它只能在該目錄內或在其下面使用。

你可以通過明確設置路徑來解決這個問題,即。

setcookie(name,value,expire,path,domain,secure) 

將路徑設置爲「/」。

+0

我輸入WAY的速度太慢了。 – Erik 2010-01-10 21:50:54

3

是的嘗試這個,我也面臨這個問題,但通過下面的代碼解決。

setcookie("TestCookie", "Value", time()+3600 , '/'); 
0

必須在頁面輸出前設置Cookies! 由於Cookie由腳本發送到HTTP頭中的瀏覽器,因此在發送頁面之前,必須先設置,然後才能發送單行HTML或任何其他頁面輸出。在你發送任何輸出的那一刻,你正在發信號通知HTTP頭的結尾。發生這種情況時,您不能再設置任何cookie。如果你嘗試,setcookie()函數將返回FALSE,並且cookie不會被髮送。

+0

閱讀:http://www.thesitewizard.com/php/set-cookies.shtml – 2013-05-12 05:56:14

0
setcookie('cookie_username', $cookie_username, time() + (86400 * 30), "/"); // 86400 = 1 day, '/' denotes cookie available in entire directory. 

並在另一頁:

$username = $_COOKIE['cookie_username']; 

也確保瀏覽器未阻止了Cookie。

如果您想使用的子域還餅乾:

setcookie('cookie_username', $cookie_username, time() + (86400 * 30), "/", ".subdomain.com"); // 86400 = 1 day, '/' denotes cookie available in entire directory.