【问题标题】:Page is not working -- ERR_TOO_MANY_REDIRECTS页面不工作——ERR_TOO_MANY_REDIRECTS
【发布时间】:2019-05-30 11:25:15
【问题描述】:

当这段代码在 codeigniter 中实现时(这种类型的错误显示 => localhost 重定向了你太多次。)

1)application/config/config.php

    $config['enable_hooks'] = TRUE;

2)application/config/hooks.php

    $hook['post_controller_constructor'][] = array(
        'function' => 'checkAdminLogin',
        'filename' => 'authenticate_login.php',
        'filepath' => 'hooks',
    );

3)application/hooks/authenticate_login.php(新建php文件(authenticate_login.php))

    function checkAdminLogin() {
        $CI = & get_instance();
        if (!getSession('is_logged_in')) {
            redirect('admin/login');
        } else
            return true;
    }

    function getSession($key) {
        $CI = & get_instance();
        return $CI->session->userdata(trim($key));
    }

【问题讨论】:

  • 代码中1)和2)是什么意思?
  • 在登录页面上有一个重定向循环
  • 我提到了 1、2、3 等步骤...
  • 你能把admin/login的代码给我吗
  • admin 文件夹名称登录控制器名称 function index() { die("hello"); }

标签: php codeigniter-3


【解决方案1】:

当您的访问者进入 admin/login 时,您的代码将检测到他没有登录并再次将其重定向到 admin/login....一遍又一遍...

您必须检测登录页面路由,而不是从中重定向。

类似:

function checkAdminLogin() {
    $CI = & get_instance();
    if (!getSession('is_logged_in'))
    {
        if ($_SERVER['REQUEST_URI']!='/admin/login') {
            redirect('admin/login');
        }else{
            // User is on login page, don't redirect him again
        }
    } else
        return true;
}

但我不确定在您的情况下返回 true 意味着什么。基本上你这里有3个案例:

  1. 已登录
  2. 未登录,但在登录页面上
  3. 未登录且不在登录页面上

所以你必须考虑所有这 3 个。

【讨论】:

  • 什么是解决方案??
  • 只有在您尚未在登录页面上时,在 checkAdminLogin() 内部才进行重定向。您必须检查那里的当前页面网址。
猜你喜欢
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 2012-06-03
  • 2022-10-25
  • 1970-01-01
相关资源
最近更新 更多