我在这里正在做的是我正在使用
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);
}
请让我知道如何解决这个问题
答案 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'会删除整个会话数据