2012-02-19 179 views
4

我想有一个类来检查我指定的所有控制器上的登录。 笨的版本是2.1.0,我有PHP 5.3.10Codeigniter扩展核心类

海尔是我将如何设置它: 我看http://ellislab.com/codeigniter/user_guide/general/core_classes.html ,我把它像这样: 在/应用/核心/ MY_Main .PHP

class MY_Main extends CI_Controller { 

function __construct() 
{ 
    parent::__construct(); 
} 
} 

在我的控制我的welcome.php

所以,如果我把登录查一下我的,主要应该找份工作,但我不能得到它的工作的人???

+0

您应该使用CodeIgniter的会话来存储用户数据,并检查会议每次用户是否登录。 – 2012-02-19 10:56:22

+0

这应该工作,我在我的ADMIN_Conroller中完全一样。 – Jens 2012-02-19 11:01:00

+0

嗯你可以给你的例子代码...就像上面张贴...和你有相同版本的CI – Dakadaka 2012-02-19 11:02:32

回答

2

你的逻辑是正确的,应该有效。这正是我在我的所有codeigniter网站上所做的。我的代码有点复杂,因为我的登录检查是从库中调用的(所以我必须调用$CI =& get_instance();,然后$CI代替$this),但下面的内容应该适合您。 logged_in只是当。

class MY_Main extends CI_Controller { 

    function __construct() 
    { 
     parent::__construct(); 

     $session_data = $this->session->all_userdata(); 

     if(!isset($session_data['logged_in'])) 
      redirect('/login'); 
    } 
} 

用户登录在问候您的评论以上(HTTP 500),真的不知道发生了什么事情在那里给会话数据集项目的名称。你粘贴的代码不应该像这样抛出错误,所以其他事情可能正在发生。尝试打开内置日志记录功能的代码工具。

http://codeigniter.com/user_guide/general/errors.html

0

这一段时间是因为数据库连接的拍摄

代码。

如果你的数据库,请检查:

  1. 已经被接通的错误从您的cPanel的错误日志报告选择。
  2. 用户已被添加到您的数据库。
1

您应该创建一个库类,并将其放入库文件夹中,并将其作为auto_load或在控制器中加载。 创建库内功能,例如:

/** 
    * 
    * @return boolean check if a user is logged in or not 
    */ 
    function notLogin() 
    { 
     if (!$this->is_logged_in()){ 
      //echo "pelase <a href='login'><b>login</b></a> to continue "; 
      redirect('home/login','refresh'); exit; 
     } 
     return true; 
    } 

,并称之为你的控制器构造或内部的任何功能,你想是这样的:

class Main extends CI_Controller 
{ 
    private $POST = array(); 
    private $ci_form; 

    function __construct() 
    { 
     parent::__construct(); 
     //check if user is logged in or not 
     $this->m_auth->notLogin(); 
     $this->load->library('form_validation'); 
     $this->load->library('ajax_pagination'); 
    } 
}