无法使用正确的cookie参数生成会话ID

时间:2016-12-06 12:03:55

标签: php session-cookies

我目前正在创建一个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);

我想不出有什么理由会发生这种情况,也不知道如何解决这个问题。 如果有人能帮助我,那就太好了。

提前致谢!

1 个答案:

答案 0 :(得分:0)

当您通过http而非https加载页面时,无法将:+参数设置为$secure。如果您这样做,您将永远不会收到cookie,因为您刚刚指定cookie只能通过安全连接发送。

因此您需要使用默认值或手动将其设置为true

false