.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. PHP
  5. 【PHP】sessionとは?|sessionの説明から使い方まで分かりやすく解説!

【PHP】sessionとは?|sessionの説明から使い方まで分かりやすく解説!

  • PHP
  • プログラミング言語
公開日時:   更新日時:
【PHP】sessionとは?|sessionの説明から使い方まで分かりやすく解説!
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    システム
    エンジニア
    Node.jsとは何かよく分かリました。
    プロジェクト
    マネージャー
    Node.jsはJavaScriptをサーバーサイドで扱うこともでき、そうすると、JavaScriptだけでWebアプリや便利なフレームワークを使ってフロントエンドの面倒な作業を自動化させることができます。

    sessionとは?


    セッションとは、広義のコンピューター用語で「一連の処理のはじまりから終わり」を示す概念のことを言います。

    例えば、Webサイトにアクセスしてそのページから出るという一連の処理があった場合、これを1つのセッションとして考えることができます。

    通常の場合、ECサイトにログインして商品を買い物リストに追加し、購入ボタンを押すといった処理があれば、画面が切り替わるごとにセッションがリセットされ、ユーザーがログインした情報などが失われてしまいます。

    そこで今回紹介する、狭義の意味でのsession(セッション)とCookie(クッキー)という仕組みを使えば、PHPでユーザー情報をWebサーバーに保持し、上記の処理を一連のものとして扱えるようになります。

    sessionとCookieについて理解しよう

    PHPでユーザー情報をWebサーバーに保持しておくためには、sessionとCookieという2つの仕組みを使う必要があります。Cookieもsessionのようにユーザーの情報を保持する仕組みです。

    Cookieを使うと、ユーザーが入力した個人情報やログイン情報などを保持しておき、例えばログイン後に次の画面に移動してもログイン情報が失われずに次の処理ができるようになります。

    PHPでCookieに情報を保持するためには、下記のように「setcookieファンクション」を利用します。

    また、Cookieの情報を取り出す際には、$_COOKIE[‘クッキーの名前’]という配列を利用します。

    Cookieとsessionの違いは?

    Cookieもsessionも使い道は似ていますが、Cookieはクライアント側に情報が保存されるのに対し、sessionはサーバー側に情報が保存されるという違いがあります。

    Cookieはクライアント側(ブラウザ)に情報が保存される上に、ブラウザを操作すれば保持された個人情報を盗み見ることもできるため、重要な情報を保存するのには向いていません。

    sessionはCookieのように保存期間を決めることができず、「Webブラウザを閉じるまでしか情報を保持できない」という制限が存在しますが、その分Cookieに比べ安全に情報を保存することができます。

    この2つを扱えるようになると、PHPでユーザーの個人情報やログイン状態などを管理できるようになります。

    PHPでのsessionの使い方


    それでは、PHPでsessionとCookieを扱う方法をいくつか解説していきます。

    処理はそれほど複雑ではなく、基本はセッション関数を呼び出して、セッション変数に値を格納するといったシンプルな手順になります。

    $_SESSIONはPHPで定義済みのスーパーグローバル変数なので、コード中のどこからでも使用することができます。

    session_start関数の実行

    PHPでsessionを使うには、はじめに「session_startファンクション」を使ってセッションIDを発行します。この処理コードは、sessionを使うページ全てに書かなければいけません。

    セッションIDが発行されると、ランダムな英数字が羅列され、その情報がCookieに保存されます。その情報をもとに、ユーザーの個人情報などを引き出します。

    「$_SESSION[‘セッションの名前’] = ‘セッションに保存する値’;」のように書くことで、保存したい値を変数に代入します。下記がその例です。

    次に、index.phpでsessionに代入した値を、next.phpで取り出してみます。ここでも「session_startファンクション」を最初に記述し、「print($_SESSION[‘セッションの名前’]);」で値を表示します。

    セッションIDの確認

    現在のセッションIDを確認するには、「session_idファンクション」を使用します。

    また、セッション名を確認する際には、「session_nameファンクション」を使用します。

    sessionの削除

    PHPでセッションを削除するには、下記のように「session_unsetファンクション」を使います。

    session_unset ファンクションを使うと、全てのセッション変数が削除されます。もう一つの削除方法としては、下記のような個別のデータだけを削除する「unsetファンクション」を使ったものもあります。

    sessionのセキュリティについて


    sessionはユーザーの個人情報を扱っているので、sessionを使って何かサービスを提供する際にはセキュリティ対策をしっかり行っておく必要があります。

    sessionは、CookieにセッションIDを保存しています。つまり、ブラウザでCookieにアクセスしてセッションIDを盗む技術があれば、簡単にユーザーのデータを悪用されてしまうリスクがあるのです。

    セキリュティ対策の手段は多岐に渡っているので全てを網羅できませんが、下記でsessionセキュリティ対策事例をいくつか紹介します。

    セッションIDの再発行をする

    PHP公式では、セキリュティ的損害が許されないシビアな情報を扱う際、15分ごとにセッションIDを更新することが推奨されています。下記がセッションID更新のコード記述例です。

    上記のコードを実行すると、ブラウザの再読み込みを行うたびに、セッションIDが変更されるのを確認できます。

    httpsを使う

    Webサイトのデータをやり取りする規約にはhttpとhttpsがありますが、ユーザーの情報を扱う際にはhttpsを使うのが基本となります。

    httpsは通信内容が暗号化されるのに対し、httpは暗号化されていない状態で通信を行うことになります。そのため、httpはセキリュティ面でのリスクが非常に大きくなっています。

    また、https通信の場合でのみCookieが使えるようにphp.iniファイルに下記の設定を行っておくと、httpの場合はCookieが送信されないようにできます。

    Webサーバーのセキュリティ対策もする

    sessionを安全に運用するためには、Webサーバーのセキリュティ対策も行っておく必要があります。

    なぜなら、sessionのファイルはWebサーバーに保存されているので、Webサーバーへの不正アクセスがあった場合、sessionに保存された情報も盗まれるリスクがあるからです。

    パスワードを複雑なものにしたり、強力なセキリュティソフトを導入したり、不要なアプリを削除するなどして、攻撃者が付け入るセキュリティの隙をできる限りなくすことが重要となります。

    システム
    エンジニア
    PHPでのsessionは便利な反面、セキュリティ対策が必要なことがよく分かりました。
    プロジェクト
    マネージャー
    その通りです。ご紹介した方法を参考にして、セキュリティ対策を十分にとっておくようにしましょう。

    sessionを理解してPHPを活用しよう


    PHPでのsession処理はシンプルなので、簡単なコード実装で個別のユーザーがECサイトを利用し、商品を購入する仕組みなどを構築することが可能です。

    しかし、ユーザーの個人情報を扱う以上はセキュリティ面での課題をしっかり考え、追加の対策も行っていく必要があります。

    今回ご紹介した知識でPHPへの理解を深めつつ、より安全なコードを追求していきましょう。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    新着案件New Job