由于这行: parent::Controller()
,我假设您正在使用 CodeIgniter 1。由于您正在构建类似home
and的页面login
,我假设您正在开始构建一个新网站。如果我的假设是正确的,我建议您使用最新的 CodeIgniter(目前为 v2.1.0,需要 PHP 5.1.6 或更新版本)。您可以在 CodeIgniter 主页上获取一份副本。
首先,我认为您应该检查您的错误报告级别。它应该类似于error_reporting(E_ALL);
调试。如果还没有,请打开它并再次运行代码。也许在那之后你会得到自己的答案:)
之后,您应该为您的构造函数尝试以下代码,以检查您的家庭控制器进程是否符合您的预期。
function Home()
{
parent::Controller();
echo 'Home Class Initialized';
}
它至少应该显示 404 页面。如果它没有打印出任何东西,那么我们需要更多信息。也许您应该打开日志记录并分析您的日志文件:查找/application/config/config.php
:$config['log_threshold'] = 2;
如果它打印出 'Home Class Initialized' 后跟 404 消息:请检查您的控制器是否有类似的东西:
public function index()
{
echo 'Invoke default method';
}
如果还没有,请添加一个。您可能还想看看在这里使用您自己的默认方法
如果它仍然是 404,那么对不起,我不知道。也许您应该发布更多代码。
如果它只打印出'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 和 2 相同的路径。如果没有,请检查您的会话数据:var_dump($this->session->userdata('id')
。您可以在此处了解有关 PHP 虚假的更多信息
毕竟,如果仍然失败,请考虑使用__construct()
PHP 5
function __construct()
{
parent::__construct();
if ( ! $this->session->userdata('id'))
{
redirect ('login');
}
$this->load->model('Home_Model');
}
其他:如果你使用这个$this->load->model('Home_Model');
,我认为你将不得不像这样调用 home_model$this->Home_Model->foo();
否则会出现错误访问 NULL