如果session为null,如何重定向到登录页面

时间:2012-12-16 06:41:03

标签: session yii

如果会话在应用程序级别使用Yii框架为null,我想重定向到登录页面。它应适用于登录页面以外的所有页面。任何帮助赞赏

1 个答案:

答案 0 :(得分:1)

最好的方法是修改 Controller 基类( protected / components / Controller.php )。您可以添加init()函数,该函数将在每次Controller调用时执行,如:

public function init(){
    if(!isset($_SESSION['mysession'])){
        this->redirect("site/login");
    }
}

您可以使用以下方式访问当前的控制器:

Yii::app()->controller->id 

但是你无法在init函数中访问Action(通常你可以使用Yii::app()->controller->action->id)。最简单的方法是检查URL,如:

if ($_SERVER['REQUEST_URI'] == "/site/login"){
    // it's the login page
}

如果您正在子文件夹中使用localhost,则可能需要在进行比较之前编辑$_SERVER['REQUEST_URI'],如下所示:

$url = str_replace("/mysubfloder","",$_SERVER['REQUEST_URI']);

然后与之比较。也可能最好在字符串中检查 index.php

我假设您使用此功能使某些页面无法访问未登录的用户?如果是这种情况,您确实应该使用accessRulesRead more about that here