ログイン機能を実装してセッション管理をしたいということと思います。
(ログインしているユーザーにコンテンツを見せるなど)
勉強のためということであれば別なのですが、
自前でセッション管理をするのはけっこう大変です。
仕組み自体はできますがセキュリティを考えると、
かなりいろいろ考える必要がありますので。
少なくとも「SQLインジェクション」
「セッション乗っ取り」「パスワードの暗号化」
などは考慮する必要があるかと思います。
できれば、PHPフレームワークと呼ばれるものを
使うほうが楽です。
自分で一から組まなくても、
そういった機能がプラグインなどで事前に準備されています。
・FuelPHP
・CakePHP
・Symfony
フレームワークの仕組みを使えば、
ある程度セキュリティはしっかりしていますし(もちろん対策はいる)、
バリデーション(検証)の機能なども初めから実装されています。
(例えば、すでに登録があれば警告やメールアドレス形式が誤っていれば、
エラーを出すなど)
ユーザー登録用のテーブルと、
ログイン画面のテーブルをどのように関連付ければいいのでしょうか。
こちらはちょっと意味がとりにくいですが
ログイン情報(ログインIDとパスワード)とユーザー情報(名前や住所など)
を格納するためのテーブルというふうに仮定します。
登録ではログインテーブルとユーザーテーブルに値格納、
ログインではログインテーブルを参照というようになります。
この段階でテーブル間の紐付けというのが何を実現したいかが分かりませんが、
JOINなどを使って紐づけるのが一般的かと思います。
http://www.pursue.ne.jp/jouhousyo/SQLDoc/select22.html
これによりログインIDがxxxのユーザーのプロフィールはyyyのように、
データを取得することができます。
あとはログイン情報とユーザー情報を確実にDBへ格納するために、
トランザクション処理を行うということくらいでしょうか。
これで通信状況などでユーザー情報の格納された場合に、
ログイン情報もDBに格納しないという処理が実現できます。
ログイン情報のみが存在してしまうとテーブル間の不整合が起こり、
都合がよくないので。
勉強のためにフレームワークを使わずにというのはいいですが、
実際の運用を考えればフレームワークを使うほうが短期間で、
いいものが出来上がるかと思います。
もちろん、フレームワークも勉強は必要ですが、
使えるようになると大変便利ですので。
ちなみに、上記はほとんどTeratailで教えてもらった知識です。
たしょう間違っている箇所もあるかと思いますが、
参考にしていただければ幸いです。
また何か私でわかることがあれば聞いてください。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/29 06:49
2015/10/29 08:16