我制作了一个applicationBehavior.php
位于组件文件夹中的文件,如下所示:
<?php
class applicationBehavior extends CBehavior
{
public function events()
{
return array(
'onBeginRequest'=>'massLogout',
);
}
public function massLogout()
{
$owner = $this->getOwner();
if($owner->getGlobalState('massLogout') && ($owner->user->name!=='bertho'))
{
$owner->user->clearStates();
$owner->catchAllRequest=array('maintenance','view'=>'index');
}
}
}
而且我已经注册了config/main.php
:
'behaviors'=>array(
'class'=>'application.components.applicationBehavior',
),
我会用来在应用程序上进行设置吗?如果我运行控制器来禁用我的应用程序(Maintenance mode
),那么将以一种方式调用:
public function actionTurnoff()
{
Yii::app()->setGlobalState('massLogout',true);
$this->render('turnoff');
}
所有用户都会自动停止,除非我使用用户名的用户:bertho
。
现在的问题是当我(用户名:)bertho
注销时,我会lose control
重新进入我的应用程序。
without login
如果普通用户 ( ) 不受此行为影响,我应该如何创建代码?
我试图检查条件:
$user = $owner->user->name;
接着 :
if($user!='Guest'){
if($owner->getGlobalState('massLogout') && $user=='bertho'){
$owner->user->clearStates();
$owner->catchAllRequest=array('maintenance','view'=>'index');
}
}
但是总是报错:session_regenerate_id(): Session object destruction failed
。
我应该怎么办?