Codeigniter-tempdata
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にアクセスすると、次のような画面が表示されます。
- 「ここをクリック」*リンクをクリックすると、次のような画面が表示されます。
この画面では、一時データ変数の値が表示されます。 一時データを5秒間設定したため、同じページを5秒後に再度更新すると、上記のような画面が表示され、一時データ変数は5秒後に自動的に削除されます。 5秒前に同じページを更新すると、期間が終了していないため、一時データは削除されません。
セッションの破棄
PHPでは、* session_destroy()*関数を使用してセッションを破棄し、CodeIgniterでは、以下に示すように関数を破棄できます。
$this->session->sess_destroy();
この関数を呼び出した後、 flashdata および tempdata を含むすべてのセッションデータは完全に削除され、元に戻すことはできません。