我知道我要么是跳过了一些东西,要么是错误地配置了会话,但Yii会话对我来说不起作用。我花了很多时间在调试和搜索上,但它并没有得到任何具体的答案。
如文档和教程中所述,我已通过Internet配置了应用程序会话,如下所示:
'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个多小时在调试和寻找解决方案。吨感谢任何指针提前。
谢谢
塔伦(~ T)
4条答案
按热度按时间zu0ti5jz1#
这很可能只是因为您的会话名称中有空格。
我刚刚在我的Yii示例上做了一个快速测试,修改了会话名,使其包含一个空格,并且会话的cookie值似乎每次都在改变。
4nkexdtk2#
请阅读php会话名称文档,网址为http://php.net/manual/en/function.session-name.php
它清楚地提到会话名称应该只包含字母数字字符。它也应该包含至少一个字母(会话名称不能将其所有字符也作为数字)。否则每次都生成一个新的会话ID。
dfuffjeb3#
chrome 44和chrome 47的bug,更新到51,没问题。
sczxawaw4#
我在Yii 2中遇到了这个问题。我有一个常量
COOKIE_DOMAIN
,它是通过php-fpm配置设置的,它用于错误的域名,导致会话重置。请确保它设置为“. example.com“(包括开头的.以支持所有主机名)