CodeIgniter - Tempdata

En algunas situaciones, en las que desea eliminar los datos almacenados en la sesión después de un período de tiempo específico, esto se puede hacer usando tempdata funcionalidad en CodeIgniter.

Agregar Tempdata

Para agregar datos como tempdata, tenemos que usar mark_as_tempdata()función. Esta función toma dos elementos de argumento o elementos para ser almacenados comotempdata y el tiempo de vencimiento de esos artículos se muestra a continuación.

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

También puede pasar una matriz para almacenar varios datos. Todos los elementos almacenados a continuación caducarán después de 300 segundos.

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

También puede establecer diferentes tiempos de vencimiento para cada artículo como se muestra a continuación.

// '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 
));

Recuperar Tempdata

Podemos recuperar los tempdata usando tempdata()función. Esta función asegura que solo obtiene datos temporales y no otros datos. Mire el ejemplo que se muestra a continuación para ver cómo recuperar tempdata.tempdata() La función tomará un argumento del elemento que se va a buscar.

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

Si omite el argumento, puede recuperar todos los tempdata existentes.

Quitar Tempdata

Tempdata se elimina automáticamente después de su tiempo de vencimiento, pero si desea eliminar tempdata antes de eso, puede hacerlo como se muestra a continuación usando el unset_tempdata() función, que toma un argumento del elemento a eliminar.

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

Ejemplo

Crea una clase llamada Tempdata_controller.php y guárdalo en 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'); 
      } 
   } 
?>

Crea un archivo llamado tempdata_view.php y guárdalo en 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>

Realice los cambios en el routes.php en application / config / routes.php y agregue la siguiente línea al final del archivo.

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

Ejecute el ejemplo anterior visitando el siguiente enlace. Reemplace el yoursite.com con la URL de su sitio.

http://yoursite.com/index.php/tempdata

Después de visitar la URL anterior, verá una pantalla como se muestra a continuación.

Haga clic en “Click Here” enlace y verá una pantalla como se muestra a continuación.

Aquí, en esta pantalla, verá un valor de la variable de datos temporales. Actualice la misma página después de cinco segundos nuevamente, ya que hemos configurado los datos de temperatura para cinco segundos y verá una pantalla como la anterior y la variable de datos de temperatura se eliminará automáticamente después de cinco segundos. Si actualiza la misma página antes de 5 segundos, los datos temporales no se eliminarán, ya que el período de tiempo no ha terminado.

Destruir una sesión

En PHP, estamos usando el session_destroy() función para destruir la sesión y en CodeIgniter podemos destruir la función como se muestra a continuación.

$this->session->sess_destroy();

Después de llamar a esta función, todos los datos de la sesión, incluido el flashdata y tempdata se eliminará de forma permanente y no se podrá recuperar.