CodeIgniter - Tempdata

In alcune situazioni, in cui si desidera rimuovere i dati archiviati nella sessione dopo un determinato periodo di tempo, è possibile farlo utilizzando tempdata funzionalità in CodeIgniter.

Aggiungi Tempdata

Per aggiungere dati come tempdata, dobbiamo usare mark_as_tempdata()funzione. Questa funzione accetta due elementi argomento o elementi da memorizzare cometempdata e il tempo di scadenza per tali articoli è mostrato di seguito.

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

Puoi anche passare un array per archiviare più dati. Tutti gli elementi memorizzati di seguito scadranno dopo 300 secondi.

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

Puoi anche impostare un tempo di scadenza diverso per ogni articolo come mostrato di seguito.

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

Recupera Tempdata

Possiamo recuperare i tempdata usando tempdata()funzione. Questa funzione assicura che si ottengano solo tempdata e non altri dati. Guarda l'esempio fornito di seguito per vedere come recuperare tempdata.tempdata() la funzione richiederà un argomento dell'elemento da recuperare.

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

Se ometti l'argomento, puoi recuperare tutti i dati temporanei esistenti.

Rimuovi Tempdata

Tempdata viene rimosso automaticamente dopo la sua scadenza, ma se si desidera rimuovere tempdata prima, è possibile fare come mostrato di seguito utilizzando unset_tempdata() funzione, che accetta un argomento dell'elemento da rimuovere.

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

Esempio

Crea una classe chiamata Tempdata_controller.php e salvalo 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'); 
      } 
   } 
?>

Crea un file chiamato tempdata_view.php e salvalo 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>

Apporta le modifiche nel file routes.php file in application / config / routes.php e aggiungi la seguente riga alla fine del file.

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

Eseguire l'esempio precedente visitando il seguente collegamento. Sostituisci yoursite.com con l'URL del tuo sito.

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

Dopo aver visitato l'URL sopra, vedrai una schermata come mostrato di seguito.

Clicca su “Click Here” link e vedrai una schermata come mostrato di seguito.

Qui, in questa schermata vedrai un valore della variabile dei dati temporanei. Aggiorna nuovamente la stessa pagina dopo cinque secondi poiché abbiamo impostato i dati della temperatura per cinque secondi e vedrai una schermata come sopra e la variabile dei dati della temperatura verrà rimossa automaticamente dopo cinque secondi. Se aggiorni la stessa pagina prima di 5 secondi, i dati temporanei non verranno rimossi, poiché il periodo di tempo non è terminato.

Distruggere una sessione

In PHP, stiamo usando il session_destroy() funzione per distruggere la sessione e in CodeIgniter possiamo distruggere la funzione come mostrato di seguito.

$this->session->sess_destroy();

Dopo aver chiamato questa funzione, tutti i dati della sessione compreso il file flashdata e tempdata verrà eliminato definitivamente e non potrà essere recuperato.