PHP session_start cookie 不保存会话 ID
PHP session_start cookie doesn't save session id
在我的服务器上,我通过调用静态 class 函数开始一个新会话。
问题是会话 id 没有保存在会话 cookie 中,而且似乎没有会话 cookie 被保存在客户端(例如 chrome 不显示网站的 cookie)。
打印出 $_COOKIE
结果为 array(0) { }
。与 $_SESSION
.
相同
这是启动新会话的静态 class 函数:
<?php
class Session
{
private function __construct() { }
public static function sec_session_start()
{
$session_name = 'sec_session_id';
$secure = TRUE; // https only
$httponly = true; // javascript can't access session id
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams['lifetime'],
'/',
'www.example-domain.de',
$secure,
$httponly);
session_name($session_name);
session_start();
session_regenerate_id();
}
}
?>
在每一页的顶部,我开始会话
Session::sec_session_start();
例如,当我在我网站的登录页面并打印出 var_dump($_COOKIE)
时,它显示 array(0) { }
而不是 array(2) { ["PHPSESSID"]=> string(26) "..." ["sec_session_id"]=> string(26) "..." }
。
php ini 如下所示
php ini
在任何会话功能之前,您必须将 session_start
作为第一行。
确保您的网站支持 https
。
session.cookie_secure
specifies whether cookies should only be sent
over secure connections.
http://php.net/manual/en/session.configuration.php#ini.session.cookie-secure
如果没有,只需将 $secure
设置为 false
。
希望这会有所帮助。
在我的服务器上,我通过调用静态 class 函数开始一个新会话。
问题是会话 id 没有保存在会话 cookie 中,而且似乎没有会话 cookie 被保存在客户端(例如 chrome 不显示网站的 cookie)。
打印出 $_COOKIE
结果为 array(0) { }
。与 $_SESSION
.
这是启动新会话的静态 class 函数:
<?php
class Session
{
private function __construct() { }
public static function sec_session_start()
{
$session_name = 'sec_session_id';
$secure = TRUE; // https only
$httponly = true; // javascript can't access session id
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams['lifetime'],
'/',
'www.example-domain.de',
$secure,
$httponly);
session_name($session_name);
session_start();
session_regenerate_id();
}
}
?>
在每一页的顶部,我开始会话
Session::sec_session_start();
例如,当我在我网站的登录页面并打印出 var_dump($_COOKIE)
时,它显示 array(0) { }
而不是 array(2) { ["PHPSESSID"]=> string(26) "..." ["sec_session_id"]=> string(26) "..." }
。
php ini 如下所示 php ini
在任何会话功能之前,您必须将 session_start
作为第一行。
确保您的网站支持 https
。
session.cookie_secure
specifies whether cookies should only be sent over secure connections.
http://php.net/manual/en/session.configuration.php#ini.session.cookie-secure
如果没有,只需将 $secure
设置为 false
。
希望这会有所帮助。