PHPまとめ①:ログイン認証と会員専用ページの構成
今回からは現在使っている教材のまとめとして、ログイン認証と会員専用ページの仕組みを作成する。本では簡易的ではあるが実務に沿って…とあるので、今回もその流れでいきます。
第13章-01
要件定義をする。今回はログイン機能だけを作るので以下のようになる。
- emailとパスワードを入力して会員登録できる
- ログイン後は他の会員の名前を検索できる
- 同じemailで再度登録することはできない
この他、実際の定義書には「運用要件」というものもあり、「データは毎日バックアップし、1年間分保管する」など実際の運用者用の決まりを定めたものもある。
次に画面をイメージする。図そのものは本の図を使うので割愛。会員登録画面、ログイン画面、ログイン後の会員専用画面を作成する。
テーブルの構造を本に沿って作成する。今回はuserデータベースに「members」というテーブルを作成して管理する。
今回初めてパスワードをMySQLで管理する。パスワードについてはデータベースが攻撃されたことを想定し、そのままの形でデータを挿入するのではなく変化させるので長さを255にしておく必要がある。
簡単なログイン認証の仕組みと流れは以下のようになる。
- 会員登録時はすでにメールアドレスが登録されていないか調べる必要がある。データ挿入前にデータベースからデータを引き出して調べるバリデーションが必要となる。
- セキュリティ面では、登録時からパスワードの扱いには注意を払う必要がある。入力されたパスワードを暗号化してからデータ挿入する。
- ログイン画面からはメールアドレスとパスワードの入力後、メールアドレスが登録されているか、パスワードは一致しているかを確認する。
- メールアドレスとパスワードが一致したら、セッションに本人のデータを格納する。
- セッションが存在する場合、ログイン中であると判断して会員専用のアクセスを許可する。ログインしていない場合はheader()でログインページに飛ばす。
最後に、ファイル構成を確認する。
「13」、「views」はフォルダ、他の拡張子phpのファイルを作っていく。
config.phpにはWebサービスに関わる設定のみを書く。こうすることで、データベースやドメインを変更したときに1か所だけ書き直せばすべてのファイルに反映するようになる。helperというのは関数ファイルのこと。実際の制作では関数を1つのfunctions.phpにまとめるということはせず、役割ごとに細分化していく。今回はデータベース関連をdb_helper.phpに、それいがいをextra_helper.phpにまとめていく。
HTML関連はviewファイルとして管理する。ログアウトしたときは強制的にログインページへ飛ぶので、必要なのは会員登録ページ、ログインページ、メンバー専用ページの3つになる。処理の流れを書き込むファイルをコントローラと呼んだが、コントローラとビューの対応が明確になっていたほうがわかりやすい。コントローラであるmember.phpのビューファイルはmember_view.phpにするなど、名前をそろえておくとよい。