DrupalのセッションAPIについて簡単に説明します。
セッションの保存場所
セッションはデータベースの「sessions」というテーブルに保存されています。
「sessions」テーブルには下記のカラムがあります
- uid:セッション保存時にログインしていたユーザーのuid(匿名ユーザーの場合は0)
- sid:セッションID(後述)
- hostname:このセッションを最後に利用したIPアドレス
- timestamp:タイムスタンプ
- session:セッションの中身(keyとvalueのセットが保存されている)
セッションの保存方法
下記のようにセッションをセットします。
$session = \Drupal::request()->getSession();
$session->set($key, $value);
FormBaseクラスを継承したクラス内では次のように書くこともできます。
$session = $this->getRequest()->getSession();
$session->set($key, $value);
セットした$keyと$valueの組み合わせは、sessionsテーブルの「session」カラムに保存されます。
セッションの取り出し方法
セットしたときと同じ$keyを指定することで、そのとき保存した$valueの値を取り出せます。
$session = \Drupal::request()->getSession();
$value = $session->get($key);
セッションの削除方法
下記のようにセッションをリセットします。
$session = \Drupal::request()->getSession();
$session->remove($key);
ブラウザとの紐付き
ブラウザには下のような値が保存されています。
この「O8pl63RPSTwwcrObdXfTvgDRmscxj8ODOuOhFb-_yic」という値がセッションIDです。
上記と同じ値が、ハッシュ化されてデータベースにも保存されています。
以下のコードでハッシュ化することで、sessionsテーブルに「sid」として保存されている「Pgt_odi8lxY0WhCNfo58PElYS-FeYjBFEGdgR2f1vjA」という値になります。
$session_id = 'O8pl63RPSTwwcrObdXfTvgDRmscxj8ODOuOhFb-_yic';
$hashed = Drupal\Component\Utility\Crypt::hashBase64($session_id);
- コメントを追加
- 閲覧数 1180
earache homeopathic remedies
herbal supply <a href=""> https://forums.dieviete.lv/profils/127605/forum/ </a> pa prescription assistance
コメントを追加