1

我制作了一个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

我应该怎么办?

4

0 回答 0