好的,這是讓我瘋狂的。我甚至無法獲得在此工作的調試代碼。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似乎是明顯的(如果不合作)解決方案。我很開放的建議,如果沒有人能想出解決辦法...
確認瀏覽器正在將cookie發送到服務器。它將位於請求標題中。 – Anigel
一個可能的原因:您的JS代碼是從不同於PHP代碼的域中提供的,因此它創建的Cookie是針對該域的,並且不適用於您的PHP代碼。 – Spudley
我剛剛結束了它的工作,並在Javascript中完成了所有工作。我認爲這是因爲頭文件和變量是在Python中處理的,並沒有將它作爲cookie傳遞給PHP引擎。 –