CodeIgniter - Tempdata

W niektórych sytuacjach, gdy chcesz usunąć dane zapisane w sesji po określonym czasie, możesz to zrobić za pomocą tempdata funkcjonalność w CodeIgniter.

Dodaj Tempdata

Aby dodać dane jako tempdata, musimy użyć mark_as_tempdata()funkcjonować. Ta funkcja przyjmuje dwa argumenty lub elementy, które mają być przechowywane jakotempdata a czas wygaśnięcia tych pozycji przedstawiono poniżej.

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

Możesz również przekazać tablicę do przechowywania wielu danych. Wszystkie zapisane poniżej elementy stracą ważność po 300 sekundach.

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

Możesz również ustawić inny czas wygaśnięcia dla każdego elementu, jak pokazano poniżej.

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

Pobierz Tempdata

Możemy pobrać tempdata za pomocą tempdata()funkcjonować. Ta funkcja zapewnia, że ​​otrzymujesz tylko dane tymczasowe, a nie inne dane. Spójrz na poniższy przykład, aby zobaczyć, jak pobrać dane tymczasowe.tempdata() funkcja pobierze jeden argument elementu do pobrania.

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

Jeśli pominiesz argument, możesz pobrać wszystkie istniejące tymczasowe dane.

Usuń Tempdata

Dane tymczasowe są usuwane automatycznie po upływie czasu ich wygaśnięcia, ale jeśli chcesz usunąć dane tymczasowe wcześniej, możesz wykonać poniższe czynności za pomocą unset_tempdata() funkcja, która przyjmuje jeden argument elementu do usunięcia.

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

Przykład

Utwórz klasę o nazwie Tempdata_controller.php i zapisz go w 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'); 
      } 
   } 
?>

Utwórz plik o nazwie tempdata_view.php i zapisz go w 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>

Wprowadź zmiany w routes.php plik w application / config / tours.php i dodaj następujący wiersz na końcu pliku.

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

Wykonaj powyższy przykład, odwiedzając poniższy link. Zastąp twojawitryna.com adresem URL swojej witryny.

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

Po odwiedzeniu powyższego adresu URL zobaczysz ekran pokazany poniżej.

Kliknij “Click Here” link, a zobaczysz ekran, jak pokazano poniżej.

Tutaj na tym ekranie zobaczysz wartość zmiennej danych tymczasowych. Odśwież tę samą stronę ponownie po pięciu sekundach, ponieważ ustawiliśmy dane tymczasowe na pięć sekund, a zobaczysz ekran podobny do powyższego, a zmienna danych tymczasowych zostanie automatycznie usunięta po pięciu sekundach. Jeśli odświeżysz tę samą stronę przed upływem 5 sekund, dane tymczasowe nie zostaną usunięte, ponieważ okres czasu się nie skończył.

Niszczenie sesji

W PHP używamy session_destroy() function, aby zniszczyć sesję, aw CodeIgniter możemy zniszczyć funkcję, jak pokazano poniżej.

$this->session->sess_destroy();

Po wywołaniu tej funkcji wszystkie dane sesji, w tym plik flashdata i tempdata zostaną trwale usunięte i nie będzie można ich przywrócić.