こんにちは
coffeeです。
PHPフレームワークでログイン機構をサクッと構築できたのでその時の話をします。
お手元にはPHPがインストールされたMacをご用意ください。
環境構築については、MySQLの項目で紹介しております。ぜひ参考にしてみてください。
前提知識
LaravelはMVCアーキテクチャを採用したフレームワークです。
MVCアーキテクチャとは何か?ですが、
- M(Model) モデル →データベースのデータ構造
- V(views) ビュー →アプリの表示部分(見た目)
- C(Controller) コントローラ(データを扱う処理群)
という風になっています。PHPを平文で書いていると、同じSQL文を何度も生成したり、同じサーバ側の処理を何度も書いたりするので、そういったものを扱いやすくするために、このような形をとっているようです。
今回は、ユーザーというモデルを作ります。
このモデルには暗黙の命名規則があります。
例えば、データベースにUsersという名前のテーブルを作りたい、とすると、モデル名はUser(単数形)という風になります。
モデルを定義した後のデータベーステーブルの生成はコマンド一発で終了します。(このコマンドについては参考文献を参照してください)
イメージ的には、モデルの形(クッキーの型)を元にテーブル(クッキー)が作られるような感じです。
このおかげで、我々はデータベーステーブルの設計(クッキーの形や味)を考えるのみです。
MySQLの設定
私はmysqlを使いたいのでmysqlで設定していきます。(環境構築)
ログインフォームの構築
以下の記事を参考にしました。
設定の際に詰まった場所
言葉の定義ですが、モデルを元にデータテーブルを生成することをマイグレーション(migration)と言います。(コマンドはmigrate)
mysql5.7.7以下のバージョンでは、文字数制限の関係でmigrationに失敗しました。
その対策が書かれた参考文献がこちらです。
上記の項目を試したら無事migrationされました。
実装されたログインフォームの画像
右上にLogin と Register の二種類の項目が増えていることがわかります。
データ登録フォームです。ここに登録されたものがデータベースに登録されます。
本来であれば、次回ログイン時に再度データベースにアクセスし、ユーザーデータがある場合とない場合で処理が分かるなどの処理を書かなければならないのですが、その辺りを全く書く必要がないのは、さすがはフレームワークといったところでしょう。
追加でSNS認証や、e-mail認証なども可能ではあるようです。
今回はこれで以上となります。
ありがとうございました。