我可以设置一个普通的cookie,比如只设置名称,值和过期。但我无法将其设置为安全cookie或httpOnly cookie或两者兼而有之。
这是我的代码:
<?php
setcookie("TestCookie", "CookieValue", 0, null, null, true, true);
if(isset($_COOKIE["TestCookie"])){
echo '$_COOKIE["TestCookie"] = '.$_COOKIE['TestCookie'];
session_id($_COOKIE["TestCookie"]);
}
else
echo "Sorry! Cookie TestCookie was not set.";
?>
我在搜索引擎中搜索过。尝试各方面。比如更改php.ini中的设置等。
它没有显示任何错误,但仍然无效。请回答我的问题。
答案 0 :(得分:0)
setcookie
的第六个参数确保仅为HTTPS请求设置cookie。将其设置为false,或确保通过HTTPS连接。
另请注意,setcookie
不会修改$_COOKIE
,因为在脚本执行之前,Cookie只加载一次。
如果您需要从$_COOKIE
变量中获取值,则应手动设置:
setcookie("TestCookie", "CookieValue", 0, null, null, true, true);
$_COOKIE["TestCookie"] = "CookieValue";
您也可以刷新页面,但这可以为在浏览器中禁用Cookie的用户创建重定向循环:
<?php
setcookie("TestCookie", "CookieValue", 0, null, null, true, true);
if(isset($_COOKIE["TestCookie"])){
echo '$_COOKIE["TestCookie"] = '.$_COOKIE['TestCookie'];
session_id($_COOKIE["TestCookie"]);
}
else{
header('Refresh: 0');
exit();
}
?>