本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2024-11-30 20:07     阅读(527)     评论(0)     点赞(30)     收藏(2)


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

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

提前致谢!


解决方案


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

因此您需要使用默认值或者false手动设置为:

$cookieParams = session_get_cookie_params();
session_set_cookie_params(
    $cookieParams["lifetime"],
    $cookieParams["path"], 
    $cookieParams["domain"], 
    false,    // $cookieParams["secure"] will also work if you have not modified php.ini to set it to true
    $httponly
);

session_start();


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/558235/2a2c0b321b62fb826ee4/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)