あーる学習帳

自分が勉強したことや気になることなど、99%自分用です。コードを書いてるのでPCから閲覧を推奨。

PHPまとめ①:ログイン認証と会員専用ページの構成

今回からは現在使っている教材のまとめとして、ログイン認証と会員専用ページの仕組みを作成する。本では簡易的ではあるが実務に沿って…とあるので、今回もその流れでいきます。

 

第13章-01

要件定義をする。今回はログイン機能だけを作るので以下のようになる。

  • emailとパスワードを入力して会員登録できる
  • ログイン後は他の会員の名前を検索できる
  • 同じemailで再度登録することはできない

この他、実際の定義書には「運用要件」というものもあり、「データは毎日バックアップし、1年間分保管する」など実際の運用者用の決まりを定めたものもある。

次に画面をイメージする。図そのものは本の図を使うので割愛。会員登録画面、ログイン画面、ログイン後の会員専用画面を作成する。

テーブルの構造を本に沿って作成する。今回はuserデータベースに「members」というテーブルを作成して管理する。

f:id:R_de_aru:20180708171640p:plain

今回初めてパスワードをMySQLで管理する。パスワードについてはデータベースが攻撃されたことを想定し、そのままの形でデータを挿入するのではなく変化させるので長さを255にしておく必要がある。

簡単なログイン認証の仕組みと流れは以下のようになる。

  1. 会員登録時はすでにメールアドレスが登録されていないか調べる必要がある。データ挿入前にデータベースからデータを引き出して調べるバリデーションが必要となる。
  2. セキュリティ面では、登録時からパスワードの扱いには注意を払う必要がある。入力されたパスワードを暗号化してからデータ挿入する。
  3. ログイン画面からはメールアドレスとパスワードの入力後、メールアドレスが登録されているか、パスワードは一致しているかを確認する。
  4. メールアドレスとパスワードが一致したら、セッションに本人のデータを格納する。
  5. セッションが存在する場合、ログイン中であると判断して会員専用のアクセスを許可する。ログインしていない場合はheader()でログインページに飛ばす。

最後に、ファイル構成を確認する。

f:id:R_de_aru:20180708173958p:plain

「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にするなど、名前をそろえておくとよい。