Yii 操作session(设置、使用、移除、销毁、过期时间等)

  •   
  • 13344
  • PHP
  • 8
  • super_dodo
  • 2015/07/16

在Yii框架中使用需要使用到session的相关功能,Yii 操作session的使用方法(设置、使用、移除、销毁、过期时间等)简要如下所示:

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


//设置 session变量:
Yii::app()->session['var']='value';

//使用调用session
echo Yii::app()->session['var'];

//移除 session
unset(Yii::app()->session['var']);

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

Yii中设置session过期时间
如何在YII里设置SESSION过期时间,而不需要在php.ini里面设置。在protected/config/main.php里,设置:

//Yii设置session的过期时间的配置项
'components'=>array(
    'session'=>array(
        'timeout'=>3600,
    ),
)

更为复杂一点的使用时如何配置你的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 中。

在年轻人的颈项上,没有什么东西能比事业心这颗灿烂的宝珠更迷人的了。 —— 哈菲兹