【问题标题】:PHP session_start cookie doesn't save session idPHP session_start cookie 不保存会话 ID
【发布时间】:2017-11-17 22:50:21
【问题描述】:

在我的服务器上,我通过调用静态类函数开始一个新会话。 问题是会话 id 没有保存在会话 cookie 中,而且客户端似乎没有保存会话 cookie(例如,chrome 不显示网站的 cookie)。 打印出$_COOKIE 结果为array(0) { }。与$_SESSION 相同。

这是启动新会话的静态类函数:

<?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"]=&gt; string(26) "..." ["sec_session_id"]=&gt; string(26) "..." }

php ini 如下所示 php ini

【问题讨论】:

    标签: php session cookies ini sessionid


    【解决方案1】:

    确保您的网站支持https

    session.cookie_secure 指定是否只发送 cookie 通过安全连接。

    http://php.net/manual/en/session.configuration.php#ini.session.cookie-secure

    如果没有,只需将$secure 设置为false

    希望这会有所帮助。

    【讨论】:

    • 我的网站确实支持https
    【解决方案2】:

    在任何会话函数之前,您必须将session_start 作为第一行。

    【讨论】:

    • 这不是真的,否则我无法进行任何更改来操纵随后将被创建/继续的会话。 -- 是的,我知道这个答案大约有 8 个月大。
    猜你喜欢
    • 2014-03-22
    • 2020-09-16
    • 2012-08-01
    • 2012-01-27
    • 2012-05-29
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多