我在PHP中设置了一个会话,它正在创建一个cookie:PHPSESSID ... 我可以在Chrome& Opera使用document.cookie。但是在Forefox中,document.cookie还会返回其他域名在页面上设置的Cookie,例如Google Analytics。
在PHP中我设置的会话如下:
session_start();
$_SESSION['source'] = &$ref['source'];
$_SESSION['term'] = &$ref['term'];
session_write_close();
我需要能够通过查找cookie来检测此会话是否在Javascript中设置。最好的方法是什么?
目前我正在使用:
document.cookie.indexOf( 'PHPSESSID' )
这看起来有点像拙劣。
答案 0 :(得分:1)
使用这个Jquery插件,它太酷了。
https://github.com/carhartl/jquery-cookie
您可以这样使用它:
if($.cookie('PHPSESSID') != undefined){
//PHPSESSID exists
}
答案 1 :(得分:1)
document.cookie属性将返回所有cookie。虽然indexOf会起作用,但如果您的cookie实际数据包含“PHPSESSID”,它将会中断。它还将匹配以下cookie'MYPHPSESSIDIDIT',因为它包含您的cookie名称。
您可以使用以下函数解析cookie(未测试):
function getCookieValue(name)
{
// find cookie entry in middle?
var s=document.cookie,
c=s.indexOf("; "+name+"=");
if(c==-1)
{
// no, is it at the start?
c=s.indexOf(name+"=");
if(c!=0) return null;
}
// get length of value
var l=c+name.length+1,
e=s.indexOf(";",l);
// is it at the end?
if(e==-1) e-s.length;
// cut out the value
return s.substring(l,e);
}
希望这有帮助