2012-05-25 34 views
0

当我创建的CodeIgniter控制器是这样的:丢失登录页面重定向

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

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

什么与代码和问题如何解决呢?

谢谢

+0

请您可以显示登录控制器的代码。 – TechCare99

+0

也会告诉我们您使用的是哪个版本的CI。 – Kokers

回答

1

因为该行的:parent::Controller(),我假设你正在使用笨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. 如果由一个404的消息打印出“家庭类进行初始化”后续:请检查您的控制器有这样的:

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

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

    如果还是404,然后对不起,我不知道。也许你应该发布更多的代码。

  3. 如果打印出“家庭类进行初始化”只:好的。现在试试这个

    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 如果没有相同的路径,请检查您的会话数据:var_dump($this->session->userdata('id')。你可以了解更多关于PHP满口谎言here

  4. 毕竟,如果它仍然失败,请考虑使用PHP 5

其他

function __construct() 
{ 
    parent::__construct(); 
    if (! $this->session->userdata('id')) 
    { 
     redirect ('login'); 
    } 
    $this->load->model('Home_Model'); 
} 
__construct():如果你使用这个 $this->load->model('Home_Model');,我想你将必须像这样调用home_model $this->Home_Model->foo();或将有错误访问NULL

+0

正确的方法是改变重定向('登录')与重定向('index.php /登录),但错误,当我尝试在登录页面上提交表单。我的形式是这样的

”process_form是controller/login.php上的函数 –