猿问

将用户重定向到登录表单

亲爱的,


我创建了一个允许将用户重定向到特定 URL 的函数。该函数被命名为重定向和用户头函数:


public function redirect($url, $code = null)

{

    if($code == 301){

        header("HTTP/1.1 301 Moved Permanently");

    }

    header('Location: '.Router::url($url));

    die();

}

我用它来保护一些页面,以便未经身份验证的用户可以访问。我放了一个条件,允许检查用户是否已登录,如果没有将被重定向到登录表单:


if(!$this->Session->isLogged()){

    $this->redirect('users/login');

}

函数 isLogged 是:


public function isLogged()

{

    return isset($_SESSION['User'][0]->id);

}

我尝试为 BO 管理页面做同样的事情并且它有效。但我也需要保护头版。问题是当我尝试访问首页时,我重定向到登录表单,但我的 Chrome 浏览器出现 ERR_TOO_MANY_REDIRECTS 错误。


我试图删除 cookie,但我遇到了同样的问题。当我尝试忽略以下行时,我可以看到我的登录表单:


if(!$this->Session->isLogged()){

    $this->redirect('users/login');}


江户川乱折腾
浏览 167回答 2
2回答

慕标琳琳

如果您已经在该页面上,则不应尝试重定向到登录。if(!$this->Session->isLogged() && !$this->isLoginPage()){  $this->redirect('users/login');}}

qq_遁去的一_1

PHP 在两种主要情况下引发此错误:无限重定向:您可能无限次调用您提到的函数连续重定向过多:“Header”原生 PHP 函数每个实例仅处理一个标头。简而言之:与您的案例相关的错误肯定与无限重定向有关,否则可能会调用其他重定向以及您正在调用函数的页面中想要的重定向。
随时随地看视频慕课网APP
我要回答