Codeigniter-session-management
CodeIgniter-セッション管理
ウェブサイトを構築するとき、ユーザーのアクティビティと状態を追跡する必要があることが多く、そのためには*セッション*を使用する必要があります。 CodeIgniterには、この目的のためのセッションクラスがあります。
セッションの初期化
セッションデータはサイト全体でグローバルに利用できますが、これらのデータを使用するには、まずセッションを初期化する必要があります。 これを行うには、コンストラクタで次の行を実行します。
$this->load->library('session');
セッションライブラリをロードした後、次のようにセッションオブジェクトを使用するだけです。
$this->session
セッションデータを追加する
PHPでは、 $ _ SESSION 配列を使用して、以下に示すようにセッション内のデータを設定します。
$_SESSION[‘key’] = value;
「 key 」は配列のキーで、 value は等号の右側に割り当てられます。
以下に示すように、CodeIgniterでも同じことができます。
$this->session->set_userdata('some_name', 'some_value');
- set_userdata()関数は2つの引数を取ります。 最初の引数 *some_name はセッション変数の名前で、その下に some_value が保存されます。
- set_userdata()*関数は、以下に示すように値を格納するために配列を渡すことができる別の構文もサポートしています。
$newdata = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
セッションデータを削除する
PHPでは、以下に示すように* unset()*関数を使用してセッションに保存されたデータを削除できます。
unset($_SESSION[‘some_name’]);
CodeIgniterでのセッションデータの削除は、以下に示すように非常に簡単です。 以下の* unset_userdata()*関数のバージョンは、セッションから1つの変数のみを削除します。
$this->session->unset_userdata('some_name');
セッションからさらに値を削除したい場合、または配列全体を削除したい場合は、以下のバージョンの* unset_userdata()*関数を使用できます。
$this->session->unset_userdata($array_items);
セッションデータの取得
セッションでデータを設定した後、以下に示すようにそのデータを取得することもできます。 * Userdata()関数がこの目的に使用されます。 アクセスしようとしているデータが利用できない場合、この関数は *NULL を返します。
$name = $this->session->userdata('name');
例
*Session_controller.php* というコントローラークラスを作成し、 *application/controller/Session_controller.php* に保存します。
<?php
class Session_controller extends CI_Controller {
public function index() {
//loading session library
$this->load->library('session');
//adding data to session
$this->session->set_userdata('name','virat');
$this->load->view('session_view');
}
public function unset_session_data() {
//loading session library
$this->load->library('session');
//removing session data
$this->session->unset_userdata('name');
$this->load->view('session_view');
}
}
?>
*session_view.php* という名前のビューファイルを作成し、 *application/views/session_view.php* に保存します。
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter Session Example</title>
</head>
<body>
Welcome <?php echo $this->session->userdata('name'); ?>
<br>
<a href = 'http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'>
Click Here</a> to unset session data.
</body>
</html>
*application/config/routes.php* の *routes.php* ファイルに変更を加え、ファイルの最後に次の行を追加します。
$route['sessionex'] = 'Session_Controller';
次のアドレスを使用して上記の例を実行します。 yoursite.com をサイトのURLに置き換えます。