我正在使用Set-Cookie函数..在chrome和firefox中工作正常。
它设置了cookie,我可以在firebug中看到它。
但由于某种原因,它没有在I.E
中设置cookie任何人都可以验证我的语法是否正确或我是否做错了什么?
function generateSession($cookieName="wic_secure_sess", $idTag="", $numChars=32, $expireSeconds=0, $path=null, $domain=null, $secure=2) {
if (!isset($_COOKIE[$cookieName])) {
$sessId = $idTag;
for ($i=0; $i<$numChars; $i++) {
srand((double)microtime()*1000000);
$randomType=rand(1, 3);
srand((double)microtime()*1000000);
switch ($randomType) {
case 1:
$sessId.=chr(rand(65, 90));
break;
case 2:
$sessId.=chr(rand(97, 122));
break;
case 3:
$sessId.=rand(0, 9);
break;
}
}
$expires = str_replace('+0000', 'GMT', gmdate('r', strtotime('+30 days')));
if ($expireSeconds != 0) {
$expireSeconds = time()+$expireSeconds;
}
if (livecheck() || stagecheck()) {
header( "Set-Cookie:". $cookieName."=".$sessId."; expires=".$expires."; path=".$path.";HttpOnly;secure;");
}
else {
header( "Set-Cookie:". $cookieName."=".$sessId."; expires=".$expires."; path=".$path.";HttpOnly");
}
} else {
$sessId = $_COOKIE[$cookieName];
}
return $sessId;
}
?>
I dont want to use setcookie() because i am running php4 version since php4 does not support httponly in the setcookie() function
编辑:php setcookie()函数在IE中完美运行。当我使用header()创建问题时。
setcookie($cookieName, $sessId, $expireSeconds, $path, $domain, $secure);
这是对我的功能的调用:
generateSession( "my_sess", "", 20, 14400, "/");
答案 0 :(得分:0)
您可能需要考虑使用P3P privacy policy。此策略格式目前仅被Internet Explorer接受,但有助于克服浏览器隐私策略中的cookie阻止。 P3P隐私策略分为两部分:策略文件和紧凑策略头。紧凑的策略头通常足以满足大多数应用程序的需求并且实施起来最少。不同类别的P3P具有紧凑的代码,以简化标题,例如, navigation =&gt; NAV。至少,我将从紧凑策略的交互(INT),导航(NAV)和uniqueid(UNI)代码开始。
在Grails / Java中,这是一个如何传回标题的示例:
response.setHeader("P3P", "CP='INT NAV UNI'");