[英]Cookie set with javascript, not recognised with PHP (same domain and path)
這些是我的餅干:
我正在使用WAMP服務器從我自己的計算機上運行我的網站。 我從http://127.0.0.1/Zulaijen/訪問我的主頁,這是設置cookie(用戶和會話)的javascript函數:
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "; expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + expires;
}
當我使用javascript閱讀它時,它工作正常。 我參加了會議。 然后我用這段代碼轉到另一個名為'uploader.php'的PHP頁面:
if(!isset($_COOKIE['TestCookie']))
setcookie("TestCookie", "Hello World!", time()+3600);
print_r($_COOKIE);
echo("Session: " . $_COOKIE['Session'] . "<br/>User: " . $_COOKIE['User'] . "<br/>");
結果是:
數組([TestCookie] => Hello World!)注意:未定義的索引:第30行的D:\\ wamp \\ www \\ Zulaijen \\ uploader.php中的會話注意:未定義的索引:D:\\ wamp \\ www \\ Zulaijen \\ uploader中的用戶.php在第30行
這意味着我的PHP代碼沒有讀取我用javascript設置的cookie。 它只讀取我用PHP代碼設置的那個(TestCookie)。 我不明白為什么。 它們位於同一個域和相同的路徑中。
您應該嘗試設置cookie路徑。 可能是PHP和JavaScript的cookie路徑不匹配,因此cookie不會在兩者之間共享。
JavaScript cookie路徑: 如何在JavaScript中保存cookie值時設置路徑?
PHP coookie路徑(參見路徑部分): http ://php.net/manual/en/function.setcookie.php
我終於找到了導致問題的原因(偶然)。 這非常令人困惑,但它有一個非常簡單的解決方案。
要從PHP讀取cookie,您必須從文件的最開頭讀取它們。
這樣做:
<?php print_r($_COOKIE); ?>
在文件的最開始(在任何HTML代碼之前)打印我正確設置的每個cookie。 即使你從PHP設置它們,如果你不從文件的最開頭那樣做,你將無法獲得它們。
我能夠閱讀我用PHP設置的那個原因僅僅是因為我在閱讀它之前設置它,或者看起來如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.