我目前正在创建一个PHP登录系统,并且根据研究建议,我会使用会话ID cookie。当然我想让它尽可能安全,因此我将httponly cookie参数设置为true。
现在的问题是,如果我在调用session_start()函数之前尝试设置会话cookie参数,它似乎根本不会创建会话ID cookie,而如果我这样做则反过来会这样做。当然,如果我这样做,那么围绕参数的另一种方式就不会被设定。
因此要清除,这甚至不会生成会话ID cookie:
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
$cookieParams["path"],
$cookieParams["domain"],
$secure,
$httponly);
session_start();
这确实产生一个,但没有适当的参数。 (我通过在浏览器中查看我的cookie信息确认了这一点)
session_start();
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
$cookieParams["path"],
$cookieParams["domain"],
$secure,
$httponly);
我想不出有什么理由会发生这种情况,也不知道如何解决这个问题。 如果有人能帮助我,那就太好了。
提前致谢!
答案 0 :(得分:0)
当您通过http而非https加载页面时,无法将:+
参数设置为$secure
。如果您这样做,您将永远不会收到cookie,因为您刚刚指定cookie只能通过安全连接发送。
因此您需要使用默认值或手动将其设置为true
:
false