■ログイン処理
ログイン処理のテスト
ログイン処理とセッション
- ログイン処理はPHPのセッション機能を利用して実装する。
- PHPの session_start() は、実行するとセッションを開始し、配列 $_SESSION[] に現在のセッションデータを読み込む。
- このあとスクリプトで $_SESSION[] を書き換えると、そのデータは自動的にWebサーバに保存され、それがまた次回の session_start() で読み出される。
- こうしてすべてのスクリプトが session_start() を実行することで、どのスクリプトからでも同一の $_SESSION[] にアクセスできる仕組みである。
- そこで、たとえばセッションに「現在ログイン中」という情報を保存すれば、スクリプトを越えてログイン状態の判定ができるわけである。
簡単なログイン処理
- 以上をふまえて簡単なログイン処理を作ってみよう。次の4ページ構成とする。
(1) メインページ (s01.php)
(2) ログインフォーム (s01-login.php)
(3) ユーザー登録フォーム (s01-signup.php)
(4) 管理者用ページ (s01-admin.php)
- 下のフレーム↓で、実際の動作が確認できる。
永続的セッションとクッキー
- セッションは固有の番号を持ち、誰が実行中のセッションか区別可能となっている。
- このセッション番号はWebブラウザのクッキーに保存される。したがって同じWebブラウザでアクセスする限り、クッキーが消えるまでは、同じセッションが継続する。
- デフォルトでセッションクッキーの保存期間は0で、これは「Webブラウザを閉じるまで有効」という意味になる。
- これに対し、PHPの session_set_cookie_params() を実行すると、クッキーの保存期間すなわちセッションの有効期間(秒数)が指定できる。
- 有効期間を設定したセッションは、その期間が経過するまでは、Webプラウザを閉じてもPCの電源を切っても継続する。 本サイトではこれを「永続的セッション」と呼ぶ。
永続的なセッションを利用したログイン処理
- セッションの有効期間を60秒に設定した例を次に示す。
(1) メインページ (s02.php)
(2) ログインフォーム (s02-login.php)
(3) ユーザー登録フォーム (s02-signup.php)
(4) 管理者用ページ (s02-admin.php)
- 下のフレーム↓で、実際の動作が確認できる。
永続的セッションとセキュリティ上の注意
- 永続的セッションでログイン処理を実現すると、Webサービスに接続するたびログインし直す必要がなくなり、たいへん便利である。
- ただしそれは他人にPCを操作され、重要な情報をバラしてしまう可能性が高いことも留意すべきである。 ガチのセキュリティが要求されるタイプのWebサービスでは、決して永続的ログイン処理を行ってはならない。
- と書いといてアレだが、本サイトのほとんどのスクリプトは利便性のため永続的にログイン状態を保っている。 本サイトにおいてサーバに保存する個人情報は、うっかり他人にバレても問題ないものだけにしていただきたい。
メール認証付きのログイン処理
- メールによるユーザー認証の例。
> 作成中