我需要在每个请求上运行一些代码,总是取决于用户是否登录.
我在哪里放这个代码?
有没有可能我可以传递数据,这段代码:
 public function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');
        $this->load->library('security');
        $this->load->library('tank_auth');
        $this->lang->load('tank_auth');
        $this->load->model('users_model');
        if ($this->tank_auth->is_logged_in())
        {
            $data = $this->users_model->get_userinfo($this->tank_auth->get_username());
            if ($data['exp'] >= $data['max_exp']) {
                $new_data = array(
                    'exp' => $data['exp'] - $data['max_exp'],
                    'level' => $data['level'] + 1,
                );
                $this->db->where('id', $data['id']);
                $this->db->update('users', $new_data);
                echo 'Hello?';
            }
        }
    }
这是Core类中的MY_Controller ..我可以进一步传递这些数据吗?我想,在真正的课堂上再次重新调整所有数据,感觉不必要.
在核心文件夹下创建一个类,然后让所有控制器扩展该类.
我做了一个与你所描述的非常类似的登录系统.
这是核心文件夹中的一个类:
class MY_Controller extends CI_Controller{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('cart');
        $this->load->library('session');
        $this->load->library('pagination');
        $this->load->helper('form');
        $this->load->library('form_validation');
        if (!$this->session->userdata('loggedin')){
            redirect('/sessions/log_in/','refresh');
        } 
    }
}
注意:确保您的配置已正确设置为继承前缀
然后控制器文件夹中的控制器将扩展My_Controller
对于分层登录或更详细的示例,请参阅我的旧问题:
另外,教程我的基础是:
http://davidwinter.me/articles/2009/02/21/authentication-with-codeigniter/
关于进一步传递数据的答案:使用会话类?
http://codeigniter.com/user_guide/libraries/sessions.html
$this->load->library('session');
$this->session->userdata('fieldName') = 1;//*appropriateValue*;
//Call this in another class
echo $this->session->userdata('fieldName');
| 归档时间: | 
 | 
| 查看次数: | 1766 次 | 
| 最近记录: |