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.