CodeIgniter - Tempdata

Tempdata


In  some  situations,  where  you  want  to  remove  data  stored  in  session  after  some  specific time-period, this can be done using tempdata functionality in CodeIgniter.
Add Tempdata

To   add   data   as   tempdata,   we   have   to   use   mark_as_tempdata()   function.   This function   takes   two   argument   items   or   items   to   be   stored   as   tempdata   and   the expiration time for those items are as shown below.

//  'item'  will  be  erased  after  300  seconds(5  minutes)
$this->session->mark_as_temp('item',300);

You  can  also  pass  an  array  to  store  multiple  data.  All  the  items  stored  below  will  be expired after 300 seconds.

$this->session->mark_as_temp(array('item','item2'),300);

You can also set different expiration time for each item as shown  below.

//  'item'  will  be  erased  after  300  seconds,  while  'item2'
//  will  do  so  after  only  240  seconds
$this->session->mark_as_temp(array( 'item'=>300,
'item2'=>240

));

Retrieve Tempdata

We  can  retrieve  the  tempdata  using  tempdata()  function.  This  function  assures  that you  are  getting  only  tempdata  and  not  any  other  data.  Look  at  the  example  given  below to  see  how  to  retrieve  tempdata.  tempdata()  function  will  take  one  argument  of  the item to be fetched.

$this->session->tempdata('item');

If you omit the argument, then you can retrieve all the existing tempdata.
Remove Tempdata

Tempdata  is  removed  automatically  after  its  expiration  time  but  if  you  want  to  remove tempdata  before  that,  then  you  can  do  as  shown  below  using  the  unset_tempdata() function, which takes one argument of the item to be removed.

$this->session->unset_tempdata('item');

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

<?php
class  Tempdata_controller  extends  CI_Controller  {
public  function  index()
{
$this->load->library('session');
$this->load->view('tempdata_view');
}
public  function  add()
{
$this->load->library('session');
$this->load->helper('url');
//tempdata  will  be  removed  after  5  seconds
$this->session->set_tempdata('item','item-value',5);
redirect('tempdata');
}
}

?>

Create  a  file  called  tempdata_view.php  and  save  it  in

application/views/tempdata_view.php

<!DOCTYPE  html>
<html  lang="en">
<head>
<meta  charset="utf-8">
<title>CodeIgniter  Tempdata  Example</title>
</head>
<body>
Temp  Data  Example

<h2><?php  echo  $this->session->tempdata('item');  ?></h2>
<a  href='tempdata/add'>Click  Here</a>  to  add  temp  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['tempdata']  =  "Tempdata_controller";

$route['tempdata/add']  =  "Tempdata_controller/add";

Execute  the  above  example  by  visiting  the  following  link.  Replace  the  yoursite.com  with the URL of your site.
http://yoursite.com/index.php/tempdata

After visiting the above URL, you will see a screen as shown below.
Click on “Click Here” link and you will see a screen as shown below.

Here,  in  this  screen  you  will  see  a  value  of  temp  data  variable.  Refresh  the  same  page after five seconds again as we have set the temp data for  five seconds and you will see a screen   like   above   and   temp   data   variable   will   be   removed   automatically   after   five seconds.  If  you  refresh  the  same  page  before  5  seconds,  then  the  temp  data  will  not  be removed, as the time period is not over.
Destroying a Session
In  PHP,  we  are  using  the  session_destroy()  function  to  destroy  the  session  and  in CodeIgniter we can destroy the function as shown below.

$this->session->sess_destroy();

After  calling  this  function,  all  the  session  data  including  the  flashdata  and  tempdata
will be deleted permanently and cannot be retrieved back.










Comments