路徑參數可以添加到$ _COOKIE []嗎? 。如何使用PHP訪問同一個域的不同路徑上的cookie值?
回答
如果您嘗試訪問爲當前域設置的同一域上的其他路徑設置的Cookie,則無法完成此操作。瀏覽器本身限制了這一點,只發送適合當前路徑的cookies。
Facebook怎麼樣?,Facebook爲域名「facebook.com」寫入cookie,但它使用來自「www.facebook.com」的這個cookies – user962284 2012-06-07 23:42:49
@ user962284你確定嗎?我很確定FB在www.facebook.com上設置了所有的cookies,因爲它甚至無法訪問facebook.com(他們將您重定向到www) – 2012-06-08 16:18:28
這是不正確的。遵循RFC *建議的瀏覽器會在多個cookie具有相同名稱但路徑不同的情況下將這兩個值發回。實際上,PHP是阻礙它的;請看我發佈的答案。 – 2014-06-15 02:44:09
是的,這是第四個參數,但你只能夠訪問該cookie,如果它是使用當前目錄所在的路徑設置
這混亂......這是從PHP:
Cookie將在其上可用的服務器上的路徑。如果設置爲 '/',則Cookie將在整個域中可用 。如果設置爲 '/ foo /',則該cookie將僅在和/或域的所有子目錄(如 /foo/bar /)內可用的 。默認 值是 餅乾正在被設定的當前目錄。
http://php.net/manual/en/function.setcookie.php
你訪問它像任何其他的cookie。如果腳本有權訪問它,它將在$ _COOKIE中可用。
不,這樣的參數是不可能的,因爲瀏覽器不會將路徑發送到服務器。它只發送每個cookie的名稱和值(所以你不能看到路徑,如果它是一個會話cookie,它會到期等)。
我不認爲有可能從不同的路徑獲取cookie,因爲它可能會導致安全問題。
雖然HTTP客戶端(即:瀏覽器)沒有發回cookie設置的路徑,但PHP實際上會對其數組的cookie進行假設。
如果設置兩個cookie具有相同名稱,一個值爲「第一價值」與路徑/和第二值爲「第二值」與路徑/測試,瀏覽器繼推薦 - 但不是必需的 - RFC中的行爲會將這兩個值發回給您。當你/測試路徑下訪問一個URL,瀏覽器發送的:
Cookie: name=second-value, name=first-value
「問題」是,PHP只讀取第一個值 - $ _COOKIE [「名」]將只包含沒有提示「第一值」存在的值「第二值」。如果您需要訪問這兩個值,則需要自己分析$ _SERVER ['HTTP_COOKIE']的值 - 對於上例,這將包含「name = second-value,name = first-value」。請注意,「第二個值」首先在行,因爲它設置了較長的路徑。請注意RFC不保證這種行爲,它只是說HTTP客戶端應該這樣做。
有趣的是,這是特定於子目錄嗎?如在中,對子目錄的請求將收到根的cookie,但對根的請求不會接收子目錄的cookie?另外我很好奇瀏覽器是否實際執行此操作:) – 2014-06-15 09:08:25
更正,子目錄或更長的路徑將始終收到一個匹配較短路徑的cookie。所有瀏覽器都以這種方式實現。唯一不能保證的行爲是,如果你有多個具有相同名稱但路徑不同的cookie - 你應該*以一個固定的順序接收這兩個cookie,但RFC不作任何承諾。 – 2014-06-26 18:05:35
這實際上是正確答案,因爲它給出了爲什麼發生這種情況的完整解釋。我應該注意到,雖然你不能告訴'$ _COOKIE []'一個路徑,但是這個缺失,你可以告訴'setcookie'一個路徑。我們正在用API來面對這個問題。所以你可以告訴'setcookie'設置根路徑,然後在任何地方訪問它,例如:'setcookie('name','data',expire,'/')'。最後一個參數是路徑並將其設置爲'/'使其成爲根路徑。這將解決OP的問題。 – jfreak53 2014-10-24 15:48:31
- 1. 相同的域相同的端口,但不同的路徑的cookie問題
- 2. ASP.NET訪問來自不同域的Cookie
- 3. Spring Security:如何設置與上下文路徑不同的RememberMe cookie url路徑?
- 4. 如何使用System.DirectoryServices訪問不同域上的Web服務器
- 5. 訪問路徑,同時使用FileUploadControl
- 6. 從不同域訪問時看起來不同的一個PHP應用程序
- 7. 我們如何才能使不同的URL指的是同一個域上同一cookie和session
- 8. 如何跨兩個不同的域使用Cookie?
- 9. PHP中不同域名的Cookie
- 10. 如何使用Amazon S3上的多個域訪問同一存儲桶?
- 11. 如何使2進程訪問相同的路徑?
- 12. 如何使用命令行從不同路徑啓動glassfish域
- 13. 不同領域的Cookie
- 14. 如何使用不同的ms訪問
- 15. 刪除具有相同名稱但路徑不同的Cookie
- 16. iis web.config將某個域/路徑重定向到一個新域/相同路徑
- 17. 如何使用BrowserRouter訪問React中的前一個路徑?
- 18. 不同的路徑
- 19. PHP訪問路徑
- 20. 如何使一個鏈接到一個PHP的cookie,但不同的輸出
- 21. 如何訪問C#中不同域上的文件
- 22. 如何從不同域上的iframe訪問父DOM?
- 23. 如何使用powershell運行不同路徑的個人宏
- 24. 使用htaccess將現有域上的完整路徑重定向到子域上的相同路徑
- 25. 如何從cookie中讀取cookie,當cookie設置在不同的子域上時?
- 26. 如何從不同的地方訪問同一個會話?
- 27. 在相對於用戶當前URL路徑的不同路徑中設置cookie
- 28. 使用不同的路徑Yii中
- 29. 問題與重定向選擇路徑到不同的域
- 30. 在不同路徑的相同域中部署多個Rails應用程序
您可能會發現['$ 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 03:09:27