Yii的会议

时间:2014-01-07 06:09:22

标签: php session yii

我在这里正在做的是我正在使用

 Yii::app()->SESSION['userid']

没有

  Yii::app()->session->open();

登录

  Yii::app()->session->destroy();

注销

我想知道如果不打开并且销毁会话是值得的。 Yii是否在内部进行。

还有一件奇怪的事我不知道发生了什么。在同一个会话的浏览器中,我可以为多个用户登录..这不应该发生。这就是我没有使用open和destroy会话方法。

 public function actionLogout()
{
    Yii::app()->user->logout();
    Yii::app()->session->clear();
    $this->redirect(Yii::app()->controller->module->returnLogoutUrl);
}

请让我知道如何解决这个问题

4 个答案:

答案 0 :(得分:31)

用于创建yii会话

Yii::app()->session['userid'] = "value";

你可以获得这样的价值

$sleep = Yii::app()->session['userid'];

取消设置会话

unset(Yii::app()->session['userid']); # Remove the session

如果用户退出,您必须删除所有会话。

Yii::app()->session->clear();

此后,您需要从服务器中删除实际数据

Yii::app()->session->destroy();

答案 1 :(得分:1)

不要清除会话,只能注销:

Yii::app()->user->logout(false);

答案 2 :(得分:0)

一旦你开始会话,它会允许你在同一个浏览器中多次,我的意思是相同的网址,它将允许你登录,你可以只是用不同的名称重命名你的会话变量,并检查particuller变量登录与

Session是一个Web应用程序组件,可以通过Yii :: $ app-> session进行访问。

要开始会话,请调用open();要完成并发送会话数据,请调用close();要销毁会话,请调用destroy()。

会话可以像数组一样用于设置和获取会话数据。例如,

$session = new Session;

$session->open();

$value1 = $session['name1'];  // get session variable 'name1'

$value2 = $session['name2'];  // get session variable 'name2'

foreach ($session as $name => $value) // traverse all session variables

$session['name3'] = $value3;  // set session variable 'name3'

答案 3 :(得分:0)

在YII中,会话由'CHttpSession'类处理 - http://www.yiiframework.com/doc/api/1.1/CHttpSession

您是否应该使用'open()'方法int cnt=map.size(); 取决于您的配置。如果在Yii::app()->session->open();中,您已设置了 main.php然后会话将由YII自动启动。 您可以在此处参考方法'init()'的源代码 - https://github.com/yiisoft/yii/blob/1.1.16/framework/web/CHttpSession.php#L83

关于使用'close()'或'destroy()'方法的问题,方法'close()'只会取消Session的键,但'destroy'会删除整个会话数据