こんにちは、かじです。
今回はログイン機能を実装するために必要なセッションの仕組みについて解説していきたいと思います。
1.セッションとは
セッションとはプログラム間で状態を維持するための仕組みになります。
Webで通常使用するHTTP通信は状態に関する情報を保持していません。
どういうことかというと、クライアントサーバー間の通信では、クライアントがサーバーにリクエストしてサーバーがレスポンスを返すだけで、この人はログインしている、していないという情報を保持しておくことができないのです。
POSTやGETの時に何かしらの情報を渡すことはできても、それは情報を渡す先のプログラムが決まっているため、アプリケーション内のどのプログラムからでもその情報を受け取ることができるわけではありません。
そこで使用するのがセッションという仕組みです。
セッションはサーバーでクライアントの状態に関する情報を保存しておく仕組みです。
一定期間の時間制限やブラウザを閉じてしまうと情報は失われてしまうため、ずっと情報を保持しておくという訳ではありません。
これを用いてログイン機能は実装します。
2.セッションの仕組み
もう少しだけセッションについて深ぼっていきます。
セッションの仕組みは下記の通りになります。
1.サーバーへアクセスした際にセッションID発行します。
2.ブラウザのCookieとサーバーでセッションIDを共有します。
3.セッションIDを元にデータを保持や参照します。
セッションIDはブラウザ単位でサーバーが発行しているため、このクライアントはこういう状態であるという情報のやり取りを行うことができます。その一方で、同一のブラウザを使用する際は他のアカウントでのログインなどは難しくなりますので注意が必要です。
また、サーバーが発行しているため、サーバーの異なる別のアプリケーションで状態に関する情報が共有されることはありませんが、サーバーが同じ別のアプリケーションではセッション情報が共有されますので実装の段階で注意する必要があります。(あまりこういうパターンはないと思いますが)
3.ログイン認証を実装するには
ログイン認証については下記のような実装が必要になります。
1.セッションを有効にする
2.ログインするとセッションにログイン状態を保管する
3.ログインが必要なページを閲覧する際は、セッションを参照してログイン状態を判断する
4.ログアウトの際はセッションをセッションを無効にする
次回以降は生のPHPでログイン機能を実装していきましょう。
~画像出展元~