簡體   English   中英

Cookie設置為javascript,無法識別PHP(相同的域和路徑)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM