2013-07-11 23 views
1

好的,這是讓我瘋狂的。我甚至無法獲得在此工作的調試代碼。JS設置的cookie沒有在PHP中讀取

使用https://github.com/carhartl/jquery-cookie,我設置一個cookie:

var link=$.getQueryParam('q'); 
var cookie_name="project_"+q+"_diff"; 
$.cookie(cookie_name,true,{expires:7,path:'/'}); 

我嘗試閱讀的PHP腳本這個cookie:

$cookie_name="project_".$q."_diff"; 
if($_COOKIE[$cookie_name]=='true') 
    { 
    echo "<!-- Cookie Status is TRUE -->"; 
    // stuff 
    } 
else 
    { 
    echo "<!-- Cookie Status is FALSE for cookie '$cookie_name' \n All cookies: ".print_r($_COOKIE,true)."\n-->"; 
    // Other stuff 
    } 

我確認在Chrome的各種頁面上的控制檯重新加載的JS餅乾事實上已經確定了,我可以稍後再訪問它。

源代碼結果?

<!-- Cookie Status is FALSE for cookie 'project_80afd7a53462bb02dfd39e359ac3f291_diff' 
All cookies: Array 
(
) 
--> 

我也跑在控制檯下,基於另一個StackOverflow的問題,後來在控制檯但仍不能輸出到JS檢索結果。

function createCookie(name,value,days) { 
if (days) { 
    var date = new Date(); 
    date.setTime(date.getTime()+(days*24*60*60*1000)); 
    var expires = "; expires="+date.toGMTString(); 
} 
else var expires = ""; 
document.cookie = name+"="+value+expires+"; path=/; domain=.compute.amazonaws.com"; 
} 

我沒有收到任何cookie。該設置有點奇怪(在一個渲染的Jinja模板上運行PHP),但所有其他標準變量都在工作,我只需要一個會話長的用戶切換,並且cookie似乎是明顯的(如果不合作)解決方案。我很開放的建議,如果沒有人能想出解決辦法...

+0

確認瀏覽器正在將cookie發送到服務器。它將位於請求標題中。 – Anigel

+0

一個可能的原因:您的JS代碼是從不同於PHP代碼的域中提供的,因此它創建的Cookie是針對該域的,並且不適用於您的PHP代碼。 – Spudley

+0

我剛剛結束了它的工作,並在Javascript中完成了所有工作。我認爲這是因爲頭文件和變量是在Python中處理的,並沒有將它作爲cookie傳遞給PHP引擎。 –

回答

-1

把這個代碼在index.php網頁使用

if(isset($_COOKIE['uniqueID'])=='') 
{ 
$uniquenum = rand(1000, 10000); 
setcookie('uniqueID',$uniquenum,time() + (86400 * 7)); // 86400 = 1 day 
} 

比取cookie值

if(isset($_COOKIE['uniqueID']) && !empty($_COOKIE['uniqueID'])) 
{ 
} 
+0

'isset'返回一個布爾值,我不知道爲什麼你檢查它對一個空字符串 – DarkBee

0

我有這個問題也是。我通過在cookie的描述中刪除域來解決它。

實施例:

document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/"; 

P.S.我在IE,Chrome和Opera中發現這個問題。在Firefox中它起作用。

+0

StackOverflow是一個講英語的網站。請不要使用其他語言或翻譯。有一個俄羅斯版本,如果你有興趣:http://ru.stackoverflow.com/ –