【问题标题】:PHP session.cookie_secure: Disables sessions when set to truePHP session.cookie_secure:设置为 true 时禁用会话
【发布时间】:2014-07-30 21:20:52
【问题描述】:

当我设置以下配置时:

ini_set("session.cookie_secure", 1);

我的整个应用程序的会话被禁用,我无法再写入或读取会话变量。

$sessionName = "us";
session_name($sessionName);
ini_set('session.cookie_httponly', 1);
ini_set('session.entropy_file', '/dev/urandom');
ini_set('session.hash_function', 'whirlpool');
ini_set('session.use_only_cookies', 1);
// ini_set('session.cookie_secure', 1);
session_start();
session_regenerate_id();

此配置与session.cookie_secure 兼容吗? PHP 手册似乎没有解释所有这些配置。 Manual

【问题讨论】:

  • 你使用的是http还是https?如果 cookie_secure 设置为 1 你只能使用 https
  • @raidenace 问题是 PHP 手册只有一行描述该配置,我已经厌倦了修复它。我认为只有那一行不能解释问题,所以我把它贴在 SO 上。在夏洛特的回答之后,我认真地重新阅读了手册并得到了这句话:over secure connections
  • 我知道...手册有时可能很神秘,而且很容易被忽略!很高兴你明白了。

标签: php session


【解决方案1】:

session.cookie_secure 指定 cookie 是否应仅通过安全连接 (HTTPS) 发送。如果您使用 HTTP,您将不会从服务器获得任何 cookie。这就是你没有会话的原因。

编辑:我应该更准确。您获得了 cookie,但您的浏览器没有将它们发送到服务器,因为您没有使用安全连接。

【讨论】:

  • 天哪!你是对的。我在这上面浪费了太多时间。我已经多次阅读该段,但我认为我已经厌倦了解决问题并且无法理解它应该只为 HTTPS 协议打开。顺便说一句,我正在使用 HTTP。谢谢(你的)信息。 :D
【解决方案2】:

session.cookie_secure 设置为 true 意味着它只会通过安全连接(即 SSL)发送会话 cookie

如果您不使用 SSL,那么您将不会在请求中发送会话 cookie

阅读关于session.cookie_secure的PHP手册。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2013-05-13
    相关资源
    最近更新 更多