Session 如果会话为空,如何重定向到登录页面

Session 如果会话为空,如何重定向到登录页面,session,yii,Session,Yii,如果使用Yii框架在应用程序级别的会话为空,我想重定向到登录页面。它应该适用于除登录页面以外的所有页面。最好的方法是修改控制器基类(protected/components/Controller.php)。您可以添加一个init()函数,该函数将在每次控制器调用时执行,例如: public function init(){ if(!isset($_SESSION['mysession'])){ this->redirect("site/login"); }

如果使用Yii框架在应用程序级别的会话为空,我想重定向到登录页面。它应该适用于除登录页面以外的所有页面。最好的方法是修改控制器基类(protected/components/Controller.php)。您可以添加一个
init()
函数,该函数将在每次控制器调用时执行,例如:

public function init(){
    if(!isset($_SESSION['mysession'])){
        this->redirect("site/login");
    }
}
$url = str_replace("/mysubfloder","",$_SERVER['REQUEST_URI']);
您可以通过以下方式访问当前控制器:

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

if ($_SERVER['REQUEST_URI'] == "/site/login"){
    // it's the login page
}
在比较是否在子文件夹中处理本地主机之前,您可能必须编辑
$\u服务器['REQUEST\u URI']
,例如:

public function init(){
    if(!isset($_SESSION['mysession'])){
        this->redirect("site/login");
    }
}
$url = str_replace("/mysubfloder","",$_SERVER['REQUEST_URI']);
然后与之比较。也最好检查字符串中的index.php


我假设您正在使用它来使非登录用户无法访问某些页面?如果是这种情况,您确实应该使用
accessRules

谢谢你的回复。你的假设是对的。我只想让未登录用户访问一个页面。让我看看访问规则无问题(Akbar:)这里有一个非常好的指南-到目前为止,我还没有使用太多的框架类。我将普通PHP与一些Yii框架类一起使用。如果我过多地使用Yii框架类,它会对我想在视图中执行的Jquery操作产生负面影响。假设我对html使用
$form->textfield()
输入文本我可以使用jquery操作该元素吗?你可以像使用Yii一样使用jquery,它实际上内置了非常强大的jquery支持