design231 2012-12-26 17:03:21 6063次浏览 2条回复 0 0 0

我在本地windows开发的代码,放到linux虚拟机下,不能登录, 经排查,登录时能验证,并且创建了session,只要一跳转页面,session就丢失了。

另外我做了两个测试页面,也证实只要session_start(),就可以读取session,

请问,在yii 里有session_start这个设置吗?

  • 回复于 2012-12-26 21:09 举报

    首先,在Yii框架中,你不需要像标准PHP代码那样使用session_start(),
    在Yii框架中,autoStart 属性缺省被设置为true,所以,
    虽然没有使用session_start(),你仍然可以使用$_SESSION全局变量,但最好使用
    Yii框架封装的Yii::app->session:

    设置session变量:
    Yii::app()->session['var']='value';
    使用: echo Yii::app()->session['var'];
    移除: unset(Yii::app()->session['var']);

    更为复杂一点的使用时如何配置你的session
    配置项可设在 protected/config/main.php的components中:

    'session'=>array(
       'autoStart'=>false(/true),
       'sessionName'=>'Site Access',
       'cookieMode'=>'only',
       'savePath'='/path/to/new/directory',
    ),
    

    将session保持在数据库的设置:

    'session' => array (
        'class' => 'system.web.CDbHttpSession',
        'connectionID' => 'db',
        'sessionTableName' => 'actual_table_name',
    ),
    

    好,还有什么呢?对了,为了调试,有时需要知道当前用户的session ID,
    该值就在 Yii::app()->session->sessionID 中。

    最后,当用户退出登录(logout),你需要消除痕迹,可使用:
    Yii::app()->session->clear() 移去所有session变量,然后,调用
    Yii::app()->session->destroy() 移去存储在服务器端的数据。

  • 回复于 2012-12-28 15:23 举报

    好的, 谢谢,我试试

您需要登录后才可以回复。登录 | 立即注册