1

我知道我要么跳过了某些东西,要么错误地配置了会话,但 Yii 会话对我不起作用。我花了很多时间进行调试和搜索,但没有得到任何具体的答案。

如文档和互联网教程中所述,我已将我的应用程序会话配置如下:

'components'=>array(
    'user'=>array(
    // enable cookie-based authentication
    'allowAutoLogin'=>true,
    ),
    'session' => array (
    'sessionName' => 'Site Session',
    'class'=>'CHttpSession',
    'useTransparentSessionID'   =>($_POST['PHPSESSID']) ? true : false,
    'autoStart' => 'true',
    'cookieMode' => 'allow',
    'timeout' => 300
),

但是,每次我向服务器发送请求时,我都会得到一个新的会话对象。我通过 验证了相同的echo "Session id: ".Yii::app()->session->sessionID;,每次它给我不同的 id。由于这种行为,我之前在会话中添加的变量也无法访问。

请提供一些指示,我已经花了 4 个多小时进行调试和寻找解决方案。非常感谢您提前提供的任何指示。

谢谢

~塔伦

4

4 回答 4

2

很可能只是您的会话名称中有一个空格。

我刚刚对我的工作 Yii 实例进行了快速测试,将会话名称更改为其中包含一个空格,并且会话的 cookie 值似乎每次都在更改。

于 2012-11-02T08:45:43.003 回答
1

请在此 url http://php.net/manual/en/function.session-name.php阅读 php 会话名称文档

它清楚地提到会话名称应仅包含字母数字字符。它也应该包含至少一个字母(会话名称也不能将其所有字符都作为数字)。否则每次都会生成一个新的会话 ID。

于 2013-06-14T05:42:51.157 回答
0

chrome 44和chrome 47的bug,更新到51就ok了。

于 2016-06-30T04:00:16.653 回答
0

请注意,因为我在 Yii2 中遇到了这个问题。我有一个COOKIE_DOMAIN通过 php-fpm config 设置的常量,它用于错误的域名,导致会话重置。确保将其设置为“.example.com”(包括开头的 . 以支持您的所有主机名)

'components'=>[
    'session' => [
            'class' => 'yii\web\DbSession',
            'cookieParams' => [
                'path' => '/',
                'domain' => COOKIE_DOMAIN, // <<<--- check this 
                'secure' => true,
            ],
            'writeCallback' => function($session){
                return [
                    'user_id' => Yii::$app->user->id
                ];
            },
            'sessionTable' => 'session', // session table name. Defaults to 'session'.
        ],
...
]
于 2019-09-19T03:08:40.187 回答