【PHP】SESSION(セッション)の使い方

PHP

セッションはユーザーログインなどにも頻繁に使われる値の保持方法です。
PHPでSESSION(セッション)を使う方法を紹介します。

session_start()でセッション開始


  session_start();

セッションを使う場合、必ずsession_start()を最初に実行する必要があります。
セッションの場合は、基本的にはサーバー上に値を保持するので、ブラウザ側には値は保持されません。

セッションに値を格納する $_SESSION


  session_start();
  $_SESSION['VIEW_COUNT'] = 1;
  echo $_SESSION['VIEW_COUNT'];

上のように$_SESSIONというスーパーグローバル変数を使うことで、セッションに値を格納することができます。
上の例だと、VIEW_COUNTというキーに1という値を紐付けています。

セッションの確認方法

検証のNetWorkタブを開いて一度command+Rもしくはcontrol+Rで更新します。

ApplicationタブのCookiesの該当のドメインをクリックすると、PHPSESSIDというのが付与されています。
Valueの値は、送られる端末ごとに違うので、それを元にサーバーでキーを特定することができます。

セッションの流れ

  • ブラウザからサーバーに対してリクエストを送信します。
  • サーバーでResponse HeadersのCookieに対してセッションIDをセットします。
  • ブラウザでセッションIDを保持します。
  • 2回目以降はセッションIDを付きでリクエストします。
  • そのキーを元にサーバーで値を探して取得します。

上のケースでは、PHPSESSIDというのがサーバーでCookieに付与したセッションIDです。

PHPセッションファイルの格納場所の確認方法


  session_start();
  $_SESSION['VIEW_COUNT'] = 1;
  echo $_SESSION['VIEW_COUNT'];
  phpinfo();

phpinfo()を実行すると、phpのいろんな情報を一覧で確認できます。
control+Fもしくはcommand+Fで「upload_tmp_dir」を探します。
そこにパスが記載されていれば、そのパスに対してPHPのセッションファイルが作成されます。
そのファイルを開くと、上で指定したVIEW_COUNTというキーと値を確認することができます。

セッションを使って訪問回数を記録する


  session_start();
  // 2回目以降の訪問
  if(isset($_SESSION['VISIT_COUNT'])) {
    $_SESSION['VISIT_COUNT']++;
  } else {
    // 1回目の訪問
    $_SESSION['VISIT_COUNT'] = 1;
  }
  echo '訪問回数:' . $_SESSION['VISIT_COUNT'];

1回目はsession IDが保持されていないため、1回目と2回目以降で条件分岐する必要があります。
1回目なら1をセットし、2回目以降なら1ずつ足せば訪問回数を記録することができます。

PHP

Posted by devsakaso