user3367639
user3367639

Reputation: 597

Destroy a specific session in codeigniter

I have a codeigniter application that I am using the Cart class to make an e-commerce store.

I am also using Codeigniter-Auth (a library) to make accounts on this system. I have noticed when I log out while testing the application, the session data for the shopping cart is also destroyed.

I noticed in the library this is how it logs the users in:

$data = array(
  'id' => $row->id,
  'name' => $row->name,
  'email' => $row->email,
  'loggedin' => TRUE
);

$this->CI->session->set_userdata($data);

And this is how it logs the user out:

return $this->CI->session->sess_destroy();

How do I tell codeigniter to only destroy the user session and not every session in the system?

Upvotes: 0

Views: 11248

Answers (3)

deviloper
deviloper

Reputation: 7240

Using:

$data = array(
  'id' => $row->id,
  'name' => $row->name,
  'email' => $row->email,
  'loggedin' => TRUE
);

$this->session->set_userdata($data); // instead of $this->CI->session->set_userdata($data);

You are actually setting 4 session variables! To unset a specific one, use:

$this->session->unset_userdata('loggedin');

Upvotes: 4

JDGUINGAO
JDGUINGAO

Reputation: 11

The documentation states to clear the current session use $this->session->sess_destroy(); Note: This function should be the last one called, and even flash variables will no longer be available. If you only want some items destroyed and not all, use unset_userdata().

For example $this->CI->session->unset_userdata($data).

Upvotes: 1

Nuit
Nuit

Reputation: 126

I believe you can just use $this to refer to CodeIgniter's instance. You must also assign a "name" to your session data (variable) to be able to specifically unset it.

$this->session->set_userdata('sample_userlog',$data);
$this->session->unset_userdata('sample_userlog');

Hope this helps.

Upvotes: 3

Related Questions