CodeIgniter - Session Management

Session Management

When  building  websites,  we  often  need  to  track  user’s  activity  and  state  and  for  this
purpose, we have to use session. CodeIgniter has session class for this purpose.
Initializing a Session

Sessions  data  are  available  globally  through  the  site  but  to  use  those  data  we  first  need to initialize the session. We can do that by executing the following line in constructor.
$this->load->library('session');

After loading the session library, you can simply use the session object as shown below.
$this->session

Add Session Data

In PHP, we simply use $_SESSION array to set any data in session as shown below.
$_SESSION[ŧkeyŨ] = value;

Where key is the key of array and value is assigned on right side of equal to sign. The same thing can be done in CodeIgniter as shown below.
$this->session->set_userdata('some_name',  'some_value');

set_userdata() function  takes two arguments.  The first argument,  some_name, is the name of the session variable, under which, some_value will be stored.

set_userdata()  function  also  supports  another  syntax  in  which  you  can  pass  array  to store values as shown below.
$newdata  =  array(

'username'  =>  'johndoe',
          'email' =>  'johndoe@some-site.com',
'logged_in'  =>  TRUE
);

$this->session->set_userdata($newdata);

Remove Session Data

In  PHP,  we  can  remove  data  stored  in  session  using  the  unset()  function  as  shown below.
unsetſ$_SESSION[ŧsome_nameŨ]ƀ;

Removing  session  data  in  CodeIgniter  is  very  simple  as  shown  below.  The  below  version of unset_userdata() function will remove only one variable from session.

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

If  you  want  to  remove  more  values  from  session  or  to  remove  an  entire  array  you  can use the below version of unset_userdata() function.
$this->session->unset_userdata($array_items);

Fetch Session Data

After setting data in session, we can also retrieve that data as shown below.  Userdata() function  will  be  used  for  this  purpose.  This  function  will  return  NULL  if  the  data  you  are trying to access is not available.

$name=$this->session->userdata('name');

Example
Create  a  controller  class  called  Session_controller.php and save it in application/controller/Session_controller.php.

<?php
class  Session_controller  extends  CI_Controller  {
public  function  index()
{
//loading  session  library
$this->load->library('session');
//adding  data  to  session
$this->session->set_userdata('name','virat');
$this->load->view('session_view');
}
public  function  unset_sesssion_data(){

//loading  session  library
$this->load->library('session');
//removing  session  data
$this->session->unset_userdata('name');
$this->load->view('session_view');
}
}

?>

Create  a  view  file  called  session_view.php  and  save  it  in

application/views/session_view.php

<!DOCTYPE  html>
<html  lang="en">
<head>
<meta  charset="utf-8">
<title>CodeIgniter  Session  Example</title>
</head>
<body>
Welcome  <?php  echo  $this->session->userdata('name');  ?>
<br>
<a  href='http://localhost:85/CodeIgniter-3.0.1/CodeIgniter- 3.0.1/index.php/sessionex/unset'>Click  Here</a>  to  unset  session  data.
</body>

</html>

Make  the  changes  in  the  routes.php  file  in  application/config/routes.php  and  add the following line at the end of the file.

$route['sessionex']  =  'Session_Controller';

Execute  the  above  example  by  using  the  following  address.  Replace  yoursite.com  with the URL of your site.









Comments