支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • 【基本】PHPのセッションの基礎を学

セッションとは

Webアプリケーションにおけるデータの保存や管理を、サーバー側で行うことを「セッション」と呼びます。 Webサイト上に多く使用されているセッションですが、具体的な使用場面としては、ネットショッピングでのサイトでユーザーのログイン・ログアウトの機能や、購入予定の商品をカートに入れてキープしておくなどの機能があります。こうした情報のやり取りではセッションが利用されています。 また、Webサイトへアクセス、そしてそのサイトを離れるかブラウザを閉じるというところまでが1セッションと数えられます。 WebサーバはセッションそれぞれがIDを所持しており、そのIDを利用することにより複数ページを持つWebシステムであっても、各ユーザの情報を使うことが可能です。

セッションの必要性

なぜセッションを使用しなければならないかというと、Webでクライアントとサーバーの間でハイパーテキストを転送するための通信プロトコルとして使用されるHTTPプロトコルには、状態や情報を保持・管理する手段が存在しないからです。どういうことかというと、Webページに、何回アクセスされたのか、どのようなデータを持っていてどのようにアクセスしたのかといった情報をHTTPプロトコルでは保持できないのです。 ですが、Webアプリケーションを作成する際には、そのような情報を管理することが必要になってくる場面があります。 そのため、HTTPプロトコルにはない「情報を保持・管理するための仕組み」としてセッションが導入されるようになりました。PHPにおいては、セッション情報を管理するために変数が用意されており、PHPに定義済みの変数 $_SESSIONを使用し、サーバ側に保存する値であるセッション変数に値の書き込みを行います。

「cookie」と「セッション」の違い

セッションとよく比較されるものに「cookie(クッキー)」と呼ばれるものがあります。cookieもセッションと同じように、情報を保持・管理するための仕組みであるという点では同じです。cookieとセッションの違いとしては、セッションがサーバー側に情報を保持するのに対し、クッキーはブラウザ側に保持するという点があります。 ブラウザ側に情報を保持しているcookieでは、ユーザー側で内容の書き換えが可能なため、その情報を信頼し、やり取りをすることは推奨されていません。そのため、ログインすると名前や住所、メールアドレスなどの個人情報が見える場合、その情報はセキュリティの保護がcookieよりも特化しているセッションを使用するのが好ましいです。

また、先述したように情報をセッションで管理する場合、サーバー側で管理されますが、その際ファイルが作成されます。そのための仕組みとしては、他と同じになりにくいような「ハッシュ値」と呼ばれる数値を渡し、サーバー側では渡されたハッシュ値と関連づけられたファイルを作成することになります。 cookieとセッションはよく似ていますが、上記のような違いがあるため場合によっては注意が必要です。

セッションの使い方(基本)

では、セッションの基本的な使用方法を確認していきましょう。

・セッション管理の開始

データのセッション管理を開始するためには、session_start関数を使用します。session_start関数によって新しいセッションが開始され、実行することによってセッション管理が可能になります。session_start関数の記述は下記の通りです。

・セッションへ変数を登録/出力

サーバー側に値を保持させるにはセッション変数を登録する必要があります。方法としては、$_SESSIONにキーと値を管理させます。記述方法としては以下の通りです。 例えば と記述すれば$_SESSION[name]とnakashimaを一緒に管理することができ、$_SESSION[name]が記述されればnakashimaを呼び出すことが可能です。

では、登録したセッション変数を呼び出し出力します。 phpでは、printやechoを使用することによって出力ができ、セッション変数に登録されている値も出力することができます。この場合の出力結果は、「名前は、nakashimaです。」となります。 また、上記の記述では登録したセッション変数をさらに変数に格納しており、もちろん出力も可能です。この場合は、$nameの中には$_SESSION['name']が格納されているため、「nakashima」が出力されます。

・セッションへ登録された変数を削除

セッション変数に登録された値を削除することも可能です。記述方法は以下の通りです。 unsetを使用することによって、$_SESSIONに格納されたセッション変数nameは削除されます。そのためこの後に出力しようとするとエラーが発生するので、削除する際は注意が必要です。

まとめ

いかがでしたでしょうか? セッションを使用することによって、完成度の高いWebアプリケーションの作成に繋がります。この機会に是非学習してみてください。