【PHP】セッション(session)について

投稿者: | 2020年12月23日
phpアイコン

今回はPHPのセッションについて解説していきたいと思います。

セッションとはWebサーバーで一定期間データを保存してくれる仕組みのことをいいます。

それではいってみましょう!

 

セッションの概要

セッション

【特徴】

・$_SESSIONはスーパーグローバル変数。

・$_SESSION の中身は連想配列。

・session_start();でクッキーにセッションIDが保存。

など


【使用箇所】

・フォームの遷移

・ログイン処理

・ショッピングカート

など

それでは次にセッションの

設定→確認→取得

の順番で解説していきます(*^^)v

 

 

セッションの設定

設定方法

session_start();

セッションを使用する場合コードの最初に記述してセッションを開始します。

$_SESSION[‘キー’] = ‘値’

キーと値をセットします。中身は連想配列になっています。

 

設定例

session1.php

➀セッションnameにデイレコを設定

➁セッションidにsession_id()設定

③ブラウザに設定内容を表示

 

 

セッションの確認

ブラウザ

session1

 

デバッグ

スーパーグローバル変数ということが確認できます。

セッションの中身は下記のように連想配列になっています。

vscodeデバッグ

 

クッキー

ブラウザのクッキーにもPHPSESSIDという名前でセッションIDが保存されます。

cookie

 

 

セッション取得

取得方法

➀session_start()

取得時もコードの最初に記述してセッションを開始します。

➁$_SESSION[‘キー’]

キーを指定してあげれば値が取得できます。

 

取得例

session2.php

 

ブラウザ

session2.phpでもちゃんと取得できています。

session2

 

セッションの破棄

・ブラウザを閉じた時

・$_SESSION = array()をした時

この二つのタイミングでセッションが破棄されます。

 

セッションハイジャックへの対策

session_regenerate_id(true);を記述してセッションの値を暗号化します。

 

その他のセッション関連

PHP公式サイトから引用

セッション関数

  • session_abort — session 配列の変更を破棄してセッションを終了します
  • session_cache_expire — 現在のキャッシュの有効期限を取得/設定する
  • session_cache_limiter — 現在のキャッシュリミッタを取得または設定する
  • session_commit — session_write_close のエイリアス
  • session_create_id — 新しいセッションIDを作成する
  • session_decode — セッションエンコードされた文字列からセッションデータをデコードする
  • session_destroy — セッションに登録されたデータを全て破棄する
  • session_encode — 現在のセッションデータを、セッションエンコードされた文字列に変換する
  • session_gc — セッションデータのガベージコレクションを実行する
  • session_get_cookie_params — セッションクッキーのパラメータを得る
  • session_id — 現在のセッション ID を取得または設定する
  • session_is_registered — 変数がセッションに登録されているかどうかを調べる
  • session_module_name — 現在のセッションモジュールを取得または設定する
  • session_name — 現在のセッション名を取得または設定する
  • session_regenerate_id — 現在のセッションIDを新しく生成したものと置き換える
  • session_register_shutdown — セッションのシャットダウン関数
  • session_register — 現在のセッションに1つ以上の変数を登録する
  • session_reset — session 配列を元の値で再初期化します
  • session_save_path — 現在のセッションデータ保存パスを取得または設定する
  • session_set_cookie_params — セッションクッキーパラメータを設定する
  • session_set_save_handler — ユーザー定義のセッション保存関数を設定する
  • session_start — 新しいセッションを開始、あるいは既存のセッションを再開する
  • session_status — 現在のセッションの状態を返す
  • session_unregister — 現在のセッションから変数の登録を削除する
  • session_unset — 全てのセッション変数を開放する
  • session_write_close — セッションデータを書き込んでセッションを終了する

 

まとめ

ログイン機能などいろいろな箇所で使用されるので、この機会にDBにセッションIDを格納したりクッキーと連携させてみたり色々試すのもいいかもしれませんね(^^♪

以上です。

カテゴリー: php