【发布时间】:2020-10-09 23:24:17
【问题描述】:
我正在尝试更改默认会话 cookie 参数。为了存储会话数据,我使用 mysql 和 session_set_save_handler()
这是Session类的构造函数
public function __construct(){
// Instantiate new Database object
$this->db = new Database;
// Set handler to overide SESSION
session_set_save_handler(
array($this, "_open"),
array($this, "_close"),
array($this, "_read"),
array($this, "_write"),
array($this, "_destroy"),
array($this, "_gc")
);
// Start the session
session_set_cookie_params(time() + (86400 * 30),"/","",true,true);
session_start();
}
如果session_set_cookie_param() 行设置在session_start() 之后,我会遇到此错误
PHP Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active
在session_start() 之前我没有错误但没有设置cookie。并且当该行被删除时,会话 cookie 使用默认 php 数据“PHPESSID”和 exptime = Session 成功设置。
session_start() 行之前的 session_status() 等于 1 (PHP_SESSION_NONE)
如果我在session_set_save_handler() 之前设置参数,则不会设置任何cookie。
【问题讨论】:
-
我已仔细阅读该帖子并添加行 regisster_shutdown_function() 不能解决问题。是的,我之前尝试过设置 cookie 参数,但也不起作用
-
虽然我不相信这是引用问题的重复,但上面链接的原始问题的答案有帮助吗?如果没有,请在您的问题中添加详细信息(edit),我们可以重新打开它。干杯
-
您似乎也只有四个可选值中的三个,“路径”、安全、httponly。您也可以添加域值...
-
是的,我试过
session_set_cookie_params(time() + (86400 * 30),"/","",true,true); -
我已经解决了,在构造函数和cookie中添加了几行参数,这是新的构造函数;
标签: php session-cookies