【Web開発】セッションという仕組みでWebサービスが便利になる話

conceptual image of server vs user interaction プログラミング

こんばんは。ラファエルです!
日曜日の夕方ですがいつになく心に余裕があります。
大型連休前だからなのか、3週間ほど続けている瞑想のおかげなのか ^^

さて、今日はWeb開発で使われるセッションという仕組について学んだことを解説していきます。
ドットインストールのPHP講義の中で突如 “セッション”というものが出現して、気になったので深堀しました。
これから学ぶ皆さんのためになればと、また頭の整理のためにこの記事を書いていきます。
誤りなどあればブラッシュアップするためにもぜひご指摘ください!

セッションは何のためにあるのか ??

セッションというのはサーバー側にクライアント側のやり取りの情報を保持するための仕組みです。セッションを使うことで、よりユーザー体験のよいWebページを構築することが可能になります。

具体的にどういった情報を保持するかというと、

  • ユーザー名
  • パスワード
  • カートに入れた商品

などです。こういった情報を保持することで、

  • ページを閉じてもログイン状態を保持できる
  • ページを閉じても買い物かごに入れた商品リストを保持できる

といった機能が実現できます。

セッションがなかったらどうなる ??

逆にセッションという機能がなかった場合にはどうなるでしょう?
ログイン時に入力したユーザー名やパスワード、ページ上で行ったアクションの情報が保存できません。

そうすると、

  • 一度ログインしたのに、ページを開きなおしたらまたログイン画面が出現
  • いい商品を見つけたからキープしておきたいんだけどできない

といったことになってしまします。毎回ログインするのはさすがにストレスですよね。
そんなWebページはユーザー体験悪いです。

セッションによる情報の保持ってどういう仕組み ??

でもセッションってどんなふうに情報を保持しているのか、ログイン状態を保持する機能を例にとって流れを簡単に説明します。

Webページを訪れた際に、登録制のサービスであればログインをするよう求められます。
ログインとはサービス側のデータと紐づけるためのプロセスで、ユーザー名とパスワードが必要です。
なのでログイン時にはこれらを入力して晴れてWebサービスが使えるようになります。

ただし、セッションには持続時間が設定でき、設定された時間を超えてしまうとセッション情報はなくなります。
その場合は、改めてログインが必要になるわけです。

セッションを実装するにはどうすればいい ??

僕はまだサーバーサイドの言語としてはPHPしか使えないのでPHPに限った説明になります。が、きっと他の言語も根本的には同じだろうと想像します。

PHPではセッションを開始するために、

start_session();

なる決まり文句をファイルの最初に記述する必要があります。

そして、PHPにはあらかじめ定義された変数 (スーパーグローバル変数)が備わっています。
セッション情報にアクセスするにはスーパーグローバル変数の一つである “$_SESSION”という変数を使います。

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

このように代入するだけで、任意のキー名 (パラメータ)に値を代入することができます。逆に、

 $変数 = $_SESSION[‘キー名’];

これでセッションで保持している情報を取得することができます。
簡単ですが、以上がセッションの最低限の簡単な使い方です。

まとめ

セッションという仕組みがあることで、サーバー側とクライアント側のやり取りの情報が保持できることを説明しました。
そうすることでページを離れても一定時間ログイン状態を保持したり、Webページで行ったアクション (例えば買い物かごに商品を入れるなど)を記憶することができるなど、よりユーザー体験のよいWebページを構築することができます。

他にもCookieやCashなどの似たような概念がありますが、またの時に解説したいと思います。

ご指摘や意見などあればぜひコメント下さい!
では引き続きプログラミングを楽しみましょう ^^

コメント

タイトルとURLをコピーしました