CodeIgniter - Tempdata

Dans certaines situations, lorsque vous souhaitez supprimer des données stockées dans la session après une certaine période de temps, cela peut être fait en utilisant tempdata fonctionnalité dans CodeIgniter.

Ajouter des données temporaires

Pour ajouter des données comme tempdata, nous devons utiliser mark_as_tempdata()fonction. Cette fonction prend deux éléments d'argument ou éléments à stocker commetempdata et le délai d'expiration de ces articles est indiqué ci-dessous.

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

Vous pouvez également transmettre un tableau pour stocker plusieurs données. Tous les éléments stockés ci-dessous expireront après 300 secondes.

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

Vous pouvez également définir une heure d'expiration différente pour chaque élément, comme indiqué ci-dessous.

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

Récupérer les données temporaires

Nous pouvons récupérer les données temporaires en utilisant tempdata()fonction. Cette fonction garantit que vous n'obtenez que des données temporaires et pas d'autres données. Regardez l'exemple ci-dessous pour voir comment récupérer des données temp.tempdata() La fonction prendra un argument de l'élément à récupérer.

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

Si vous omettez l'argument, vous pouvez récupérer toutes les données temporaires existantes.

Supprimer les données temporaires

Tempdata est supprimé automatiquement après son expiration, mais si vous souhaitez supprimer tempdata avant cela, vous pouvez faire comme indiqué ci-dessous en utilisant le unset_tempdata() fonction, qui prend un argument de l'élément à supprimer.

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

Exemple

Créez une classe appelée Tempdata_controller.php et enregistrez-le dans 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'); 
      } 
   } 
?>

Créez un fichier appelé tempdata_view.php et enregistrez-le dans 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>

Apportez les modifications dans le routes.php dans application / config / routes.php et ajoutez la ligne suivante à la fin du fichier.

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

Exécutez l'exemple ci-dessus en visitant le lien suivant. Remplacez yoursite.com par l'URL de votre site.

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

Après avoir visité l'URL ci-dessus, vous verrez un écran comme indiqué ci-dessous.

Cliquer sur “Click Here” lien et vous verrez un écran comme indiqué ci-dessous.

Ici, dans cet écran, vous verrez une valeur de variable de données temporaires. Actualisez à nouveau la même page après cinq secondes car nous avons défini les données temporaires pendant cinq secondes et vous verrez un écran comme ci-dessus et la variable de données temporaires sera supprimée automatiquement après cinq secondes. Si vous actualisez la même page avant 5 secondes, les données temporaires ne seront pas supprimées, car la période n'est pas terminée.

Détruire une session

En PHP, nous utilisons le session_destroy() fonction pour détruire la session et dans CodeIgniter, nous pouvons détruire la fonction comme indiqué ci-dessous.

$this->session->sess_destroy();

Après avoir appelé cette fonction, toutes les données de session, y compris flashdata et tempdata sera supprimé définitivement et ne pourra pas être récupéré.