重定向时缺少登录页面

时间:2012-05-25 03:55:59

标签: codeigniter

我是这样创建codeigniter控制器:

function Home() {
    parent::Controller();
    if(!$this->session->userdata('id')) 
        redirect ('login');
    $this->load->model('Home_Model');
}

但是当我尝试访问该页面时,现在会显示重定向页面。只显示404未找到,但我在控制器上创建了login.php,在模型上也查看了home_model.php。

该代码有什么问题以及如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:1)

由于这一行:parent::Controller(),我假设您正在使用CodeIgniter 1.由于您正在构建homelogin等网页,我假设您正在开始构建新的网站。如果我的假设是正确的,我建议您使用最新的CodeIgniter(目前为v2.1.0,需要PHP 5.1.6或更新)。您可以在CodeIgniter主页上获取副本。

首先,我认为您应该检查错误报告级别。对于调试,它应该类似于error_reporting(E_ALL);。如果还没有,请将其打开并再次运行代码。也许你会在那之后得到你自己的答案:)

之后,您应该尝试下面的代码,以便构造函数检查您的主控制器是否按预期进行处理。

function Home()
{
    parent::Controller();
    echo 'Home Class Initialized';
}
  1. 至少应该显示404页面。如果它没有打印出来,那么我们需要更多的信息。也许您应该打开日志记录并分析日志文件:查找/application/config/config.php$config['log_threshold'] = 2;

  2. 如果打印出'Home Class Initialized',请按照404消息进行操作:请检查您的控制器是否包含以下内容:

    public function index()
    {
        echo 'Invoke default method';
    }
    

    如果还没有,请添加一个。您可能还想查看使用自己的默认方法here

    如果它仍然是404然后抱歉,我不知道。也许你应该发布更多代码。

  3. 如果只打印出'Home Class Initialized':好。现在试试这个

    function Home()
    {
        parent::Controller();
        if ( ! $this->session->userdata('id'))
        {
            echo 'Redirecting to login page';
            //redirect ('login');
        }
        $this->load->model('Home_Model');
    }
    

    如果打印出Redirecting to login page,现在是时候取消注释//redirect ('login');并查看登录页面了。按照步骤1和步骤1的相同路径2。 如果没有,请检查您的会话数据:var_dump($this->session->userdata('id')。您可以了解有关PHP虚假here

  4. 的更多信息
  5. 毕竟,如果仍然失败,请考虑使用PHP 5的__construct()

    function __construct()
    {
        parent::__construct();
        if ( ! $this->session->userdata('id'))
        {
            redirect ('login');
        }
        $this->load->model('Home_Model');
    }
    
  6. 其他:如果你使用这个$this->load->model('Home_Model');,我认为你必须像这样$this->Home_Model->foo();调用home_model,否则会有错误访问NULL