yii每次请求都会清理会话

时间:2014-10-16 08:48:57

标签: php session yii

我的代码示例:     

class SiteController extends Controller {

    /**
     * This is the default 'index' action that is invoked
     * when an action is not explicitly requested by users.
     */
    public function actionIndex() {

        $_SESSION['test'] = 'testdata';
        var_dump($_SESSION); exit;
    }

第二个请求的示例:     

class SiteController extends Controller {

    /**
     * This is the default 'index' action that is invoked
     * when an action is not explicitly requested by users.
     */
    public function actionIndex() {

        var_dump($_SESSION);exit;
    }

我在yii有一个项目。项目不是我的 - 我只是想修复错误。

我的问题是: 首先var_dump()显示$ _SESSION变量带有“testdata”的“test”索引。在第二个请求,虽然我得到一个$ _SESSION变量的空数组。意思是,每个请求会话都被清除。我已经检查过 - 会话ID保持不变。我还检查了这个项目配置 - 我找不到任何扩展SESSION组件和改变它的行为的引用。此外,当登录yii时,将状态保存到SESSION,但由于在重定向后清除了SESSION,登录失败。也就是说基于COOKIE的身份验证可以证明问题的根源。

非常感谢帮助。

更新


我把它缩小了。这是FRONT YII FRONT CONTROLLER(index.php)的代码:

<?php
    @session_start(); // this line is at cwebuser.php at init() method and it is called at every request. should work properly.
    var_dump($_SESSION);
    $_SESSION['test'] = 'asdasd';
    var_dump($_SESSION);exit;

它仍会在第二个REQUEST上打印空的$ _SESSION。所以问题可能不在于框架。

3 个答案:

答案 0 :(得分:0)

在protected / components / controller.php下有一个名为controller.php的文件,它会在调用任何动作之前被调用。你可以检查那个文件并看看......是否有任何注销函数被调用...

//It clears all the sesstion data... or any php way
Yii::app()->user->logout();

是的,如果你在moule,那么你也可以检查模块directopry下的ModuleName.php ...如果有任何会话清除脚本......

清除会话......是的,这不是在Yii中使用会话的正确方法是的,它是PHP但YII ....你可以使用以下sytax dfor会话..

//to set a session variable mnamed test
Yii::app()->user->setState('test',$test);
//to get a session variable named tets
Yii::app()->user->getState('test');

答案 1 :(得分:0)

您可以在/protected/config/main.php中设置会话详细信息(除非您在index.html中对其进行了更改,否则这是默认设置)

    'session' => array(
        'autostart' => true,
        'timeout' => 1440, // time in seconds
    ),

阅读CHttpSession

上的会话

答案 2 :(得分:0)

我的问题是我通过服务器IP:123.123.123.123/site/index访问了我的网站,这与访问和保存会话有冲突。虽然我不知道细节。如果有人对这些东西有所了解,我很乐意接受他(她)的回答是正确的。