Учебники

CodeIgniter — Tempdata

В некоторых ситуациях, когда вы хотите удалить данные, сохраненные в сеансе после определенного периода времени, это можно сделать с помощью функции временных данных в CodeIgniter.

Добавить Tempdata

Чтобы добавить данные в качестве временных данных, мы должны использовать функцию mark_as_tempdata () . Эта функция принимает два элемента аргумента или элементы, которые должны быть сохранены как временные данные, и срок действия этих элементов показан ниже.

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

Вы также можете передать массив для хранения нескольких данных. Срок хранения всех предметов, указанных ниже, истечет через 300 секунд.

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

Вы также можете установить различное время истечения для каждого элемента, как показано ниже.

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

Получить Tempdata

Мы можем получить временные данные с помощью функции tempdata () . Эта функция гарантирует, что вы получаете только временные данные, а не какие-либо другие данные. Посмотрите на приведенный ниже пример, чтобы узнать, как получить временные данные. Функция tempdata () будет принимать один аргумент элемента для выборки.

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

Если вы пропустите аргумент, вы можете получить все существующие временные данные.

Удалить Tempdata

Tempdata удаляется автоматически после истечения срока его действия, но если вы хотите удалить tempdata до этого, вы можете сделать это, как показано ниже, используя функцию unset_tempdata () , которая принимает один аргумент элемента, который нужно удалить.

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

пример

Создайте класс с именем Tempdata_controller.php и сохраните его в 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'); 
      } 
   } 
?>

Создайте файл с именем tempdata_view.php и сохраните его в 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>

Внесите изменения в файл rout.php в application / config / rout.php и добавьте следующую строку в конец файла.

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

Выполните приведенный выше пример, перейдя по следующей ссылке. Замените yoursite.com на URL вашего сайта.

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

После посещения вышеуказанного URL вы увидите экран, показанный ниже.

TempData

Нажмите на ссылку «Нажмите здесь», и вы увидите экран, как показано ниже.

Здесь, на этом экране вы увидите значение переменной данных temp. Обновите ту же страницу через пять секунд снова, так как мы установили временные данные на пять секунд, и вы увидите экран, подобный приведенному выше, и переменная временных данных будет автоматически удалена через пять секунд. Если вы обновите ту же страницу раньше, чем через 5 секунд, временные данные не будут удалены, так как период времени не истек.

Добавить временные данные

Уничтожение сессии

В PHP мы используем функцию session_destroy () для уничтожения сессии, а в CodeIgniter мы можем уничтожить функцию, как показано ниже.

$this->session->sess_destroy();

После вызова этой функции все данные сеанса, включая flashdata и tempdata, будут удалены навсегда и не могут быть восстановлены обратно.