Rui Ganga
Rui Ganga

Reputation: 15

Check for Sessions in Controller _constructor

I am new to Codeigniter and still trying to understand some basics.

I am building a registration/login system. everything good for now.

I am creating a controller to show the user info. Before that I want to check if the session existis and if user is logged in, if not I want to redirect to the site root.

class Myprofile extends CI_Controller {
    function __construct()
    {
        $user_data = $this->session->userdata('user_data');

        $user_data['logged_in'] = isset($user_data['logged_in']) ? $user_data['logged_in'] : null; 

        if($user_data['logged_in'] != 1){ 
            redirect();
        }
    }

    public function index(){
        redirect("myprofile/info");

    }

    public function info(){     
        echo"here I'll ave my info";
    }

}

The problem is the error I am getting. It looks like I it can't see the sessions in the construct part of the script.

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Myprofile::$session

Filename: controllers/myprofile.php

Line Number: 6

This would be the very best solution, otherwise I need to put the same code on all the functions.

Hope to hear some feedback help. Thanks

Upvotes: 0

Views: 254

Answers (2)

chrisboustead
chrisboustead

Reputation: 1563

class Myprofile extends CI_Controller {
    function __construct()
    {
        $this->load->library('session');
        $user_data = $this->session->userdata('user_data');

        $user_data['logged_in'] = isset($user_data['logged_in']) ? $user_data['logged_in'] : null; 

        if($user_data['logged_in'] != 1){ 
            redirect();
        }
    }

    public function index(){
        redirect("myprofile/info");

    }

    public function info(){     
        echo"here I'll ave my info";
    }

}

Upvotes: 0

missing_one
missing_one

Reputation: 186

Perhaps the session library is not loaded. Add session class on the autoload array() located in application/config/autoload.php

eg.

$autoload['libraries'] = array('database', 'session', 'output');

Upvotes: 2

Related Questions