如何创建安全cookie?我尝试了所有的东西,但仍然没有工作

时间:2015-03-14 13:00:44

标签: php cookies setcookie

我可以设置一个普通的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中的设置等。

它没有显示任何错误,但仍然无效。请回答我的问题。

1 个答案:

答案 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();
}
?>