получить php фатальную ошибку в контроллере codeigniter - PullRequest
0 голосов
/ 14 февраля 2012

Вот мой код:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends CI_Controller 
{
    public function __construct() 
    {
        parent::__construct();
        $this->load->database(); /* This function it's used to connect to database */
        $this->load->model('User','user'); /* This call the model to retrieve data from db */
    }

    public function index()
    {
        if(!file_exists('application/views/_login.php'))
        {
            show_404();
        }

        $this->load->library('form_validation');

        $this->form_validation->set_error_delimiters('<h4 style="text-align:center;">','</h4>');

        $this->form_validation->set_rules('username','username','trim|required|xss_clean');
        $this->form_validation->set_rules('password','password','trim|required|xss_clean|callback_pass_check');

        if($this->form_validation->run() == FALSE)
        {
            $data['title'] = "User Access";
            $data['author'] = "Salvatore Mazzarino";

            $this->load->view('templates/_header',$data);
            $this->load->view('_login',$data);
            $this->load->view('templates/_footer',$data);
        }
        else 
        {   
            redirect('home', 'refresh');            
        }
    }

    public function pass_check($pass)
    {
        $result = $this->user->find_user($this->input->post('username'),$pass);

        if($result == 1)
        {
            $session_array = array();
            foreach ($result as $row) 
            {
                $session_array = array('id'=> $row->id,'username'=> $row->username); /* Create a session passing user data */

                $this->session->set_userdata('logged_in',$session_array);
            }
            return TRUE;
        }
        else
        {
            $this->form_validation->set_message('pass_check',"Invalid username or password!</br>Try again, please!");
            return FALSE;
        }
    }
}

Вот это строка

$this->session->set_userdata('logged_in',$session_array);

, которые вызывают ошибку:

PHP Fatal error:  Call to a member function set_userdata() on a non-object

Кто-то может сказать мне причину?

1 Ответ

4 голосов
/ 14 февраля 2012

Убедитесь, что библиотека session загружена.

Вы можете добавить ее в application / config / autoload.php для автоматической загрузки.

http://ellislab.com/codeigniter/user_guide/libraries/sessions.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...