English 中文(简体)
CodeIgniter - Tempdata
  • 时间:2024-09-17

CodeIgniter - Tempdata


Previous Page Next Page  

In some situations, where you want to remove data stored in session after some specific time-period, this can be done using tempdata functionapty 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 apppcation/controller/Tempdata_controller.php.

<?php 
   class Tempdata_controller extends CI_Controller {
	
      pubpc function index() { 
         $this->load->pbrary( session ); 
         $this->load->view( tempdata_view ); 
      } 
  
      pubpc function add() { 
         $this->load->pbrary( 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 apppcation/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 >Cpck Here</a> to add temp data. 
   </body>
	
</html>

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

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

Execute the above example by visiting the following pnk. 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.

TempData

Cpck on “Cpck Here” pnk 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 pke 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.

Add Temp Data

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 calpng this function, all the session data including the flashdata and tempdata will be deleted permanently and cannot be retrieved back.

Advertisements