Codeigniter-tempdata

提供:Dev Guides
移動先:案内検索

CodeIgniter-Tempdata

特定の期間後にセッションに保存されたデータを削除したい状況では、CodeIgniterの tempdata 機能を使用してこれを行うことができます。

Tempdataを追加

データを tempdata として追加するには、* mark_as_tempdata()関数を使用する必要があります。 この関数は、 *tempdata として保存される2つの引数アイテムまたはアイテムを受け取り、それらのアイテムの有効期限は以下のとおりです。

//'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を取得できます。 この関数は、tempdataのみを取得し、他のデータは取得しないようにします。 以下の例を見て、tempdataを取得する方法を確認してください。 * tempdata()*関数は、取得するアイテムの1つの引数を取ります。
$this->session->tempdata('item');

引数を省略すると、既存のすべてのtempdataを取得できます。

Tempdataを削除

Tempdataは有効期限後に自動的に削除されますが、その前にtempdataを削除する場合は、削除するアイテムの引数を1つ取る* 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>

application/config/routes.phpの routes.php ファイルに変更を加え、ファイルの最後に次の行を追加します。

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

次のリンクにアクセスして、上記の例を実行します。 yoursite.comをサイトのURLに置き換えます。

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

上記のURLにアクセスすると、次のような画面が表示されます。

TempData

  • 「ここをクリック」*リンクをクリックすると、次のような画面が表示されます。

この画面では、一時データ変数の値が表示されます。 一時データを5秒間設定したため、同じページを5秒後に再度更新すると、上記のような画面が表示され、一時データ変数は5秒後に自動的に削除されます。 5秒前に同じページを更新すると、期間が終了していないため、一時データは削除されません。

一時データの追加

セッションの破棄

PHPでは、* session_destroy()*関数を使用してセッションを破棄し、CodeIgniterでは、以下に示すように関数を破棄できます。

$this->session->sess_destroy();

この関数を呼び出した後、 flashdata および tempdata を含むすべてのセッションデータは完全に削除され、元に戻すことはできません。