Vasja Harujko
Vasja Harujko

Reputation: 21

CodeIgniter Session variables not passing

I am using native PHP sessions ($_SESSION) with CodeIgniter framework.

I have a "Login" controller loads view where user enters login and password. After the user submits the login form, the "Login" controllers authenticate() method is called. If everything is alright i add some data to $_SESSION array, then i redirect user to "Organisation" controllers myOrganisation() method. I'm calling session_start() in Login/login() , Login/authenticate() and Organisation/myOrganisation() methods, but still the session is not passed, because in myOrganisation() method the session is new.

I tested my cookies functionality with creating 2 test php pages, where i just echo session id. It works perfectly. Maybe i am not putting session_start() in all places it needs to be? (i put them in all controllers methods).

Login Controller:

class Login extends CI_Controller {
public function index() {
        session_start();
        $this->load->view("Login/index", $data);

    public function authenticate() {
                    session_start();
                    $_SESSION['login'] = $login; //  everything is alright, redirect
        header("location: ".base_url()."Organisations/MyOrganisation");

Organisation controller:

public function MyOrganisation() {
    session_start(); // here session is a new one, not passed
    if(isset($_SESSION['login'])) {

Upvotes: 0

Views: 2739

Answers (2)

Vasja Harujko
Vasja Harujko

Reputation: 21

I don't know what was wrong with the session_start() placements that i did, but the one thing that solved the problem was to place it in index.php in main folder

Upvotes: 1

Aidas
Aidas

Reputation: 1249

session_start() can also be specified in a constructor, not every method in a class. That means both your controllers can have this:

function __construct () {
    ini_set("session.gc_maxlifetime", 14400);
    ini_set("session.cookie_domain", .yourdomain.com);
    session_set_cookie_params(14400, '/', .yourdomain.com);
    session_start();
}

The first 3 lines in a constructor are to make sure the session cookie is valid for a long time and under you domain.

Besides that (and not closed index() and authenticate() methods), where's $login coming from?

Upvotes: 0

Related Questions