我已经在组件文件夹中创建了一个文件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
。
我该怎么办?