
今回はPHPのセッションについて解説していきたいと思います。
セッションとはWebサーバーで一定期間データを保存してくれる仕組みのことをいいます。
それではいってみましょう!
Menu
セッションの概要
【特徴】
・$_SESSIONはスーパーグローバル変数。
・$_SESSION の中身は連想配列。
・session_start();でクッキーにセッションIDが保存。
など
【使用箇所】
・フォームの遷移
・ログイン処理
・ショッピングカート
など
それでは次にセッションの
設定→確認→取得
の順番で解説していきます(*^^)v
セッションの設定
設定方法
session_start();
セッションを使用する場合コードの最初に記述してセッションを開始します。
$_SESSION[‘キー’] = ‘値’
キーと値をセットします。中身は連想配列になっています。
設定例
session1.php
➀セッションnameにデイレコを設定
➁セッションidにsession_id()設定
③ブラウザに設定内容を表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php //セッションスタート session_start(); /////設定///// //name => デイレコ $_SESSION['name'] = 'デイレコ'; //① //id => セッションID $_SESSION['id'] = session_id(); //② //ブラウザに表示(セッションは連想配列なので$_SESSION['キー'])で値確認③ echo 'session1.php(name設定) : '.$_SESSION['name'].'<br>'; echo 'session1.php(id設定) : '.$_SESSION['id']; ?> |
セッションの確認
ブラウザ
デバッグ
スーパーグローバル変数ということが確認できます。
セッションの中身は下記のように連想配列になっています。
クッキー
ブラウザのクッキーにもPHPSESSIDという名前でセッションIDが保存されます。
セッション取得
取得方法
➀session_start()
取得時もコードの最初に記述してセッションを開始します。
➁$_SESSION[‘キー’]
キーを指定してあげれば値が取得できます。
取得例
session2.php
1 2 3 4 5 6 7 8 9 10 11 12 | <?php session_start(); //① /////取得/////② //ブラウザに表示(セッションは連想配列なので$_SESSION['キー'])で値取得 //name => デイレコ echo 'session2.php(name取得) : '.$_SESSION['name'].'<br>'; //id => セッションID echo 'session2.php(id取得) : '.$_SESSION['id']; ?> |
ブラウザ
session2.phpでもちゃんと取得できています。
セッションの破棄
・ブラウザを閉じた時
・$_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を格納したりクッキーと連携させてみたり色々試すのもいいかもしれませんね(^^♪
以上です。