質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2507閲覧

PHPを使ったユーザー登録サイトを作っています。

Ken_Mori

総合スコア9

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2015/10/28 08:00

初めての投稿です、よろしくお願いします。

会員登録サイトを作ろうと思っています。
そこで自分が作ろうとしているサイトが、PHPをどのように使えば動くのか質問します。

1.新規ユーザー登録ができ、ユーザーは自分のプロフィールを作成・編集ができる。
2.ログイン画面があり、登録したユーザーはそこからログイン。
3.新規登録画面もログイン画面でも不備(登録されているユーザー名の使用や、項目を正しく記述していない)があると警告をだす。
そのためにはユーザー登録用のテーブルと、ログイン画面のテーブルをどのように関連付ければいいのでしょうか。

説明が分かりにくいかもしれませんが、
詳しい方がいましたら、ご教授ください。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ログイン機能を実装してセッション管理をしたいということと思います。
(ログインしているユーザーにコンテンツを見せるなど)

勉強のためということであれば別なのですが、
自前でセッション管理をするのはけっこう大変です。

仕組み自体はできますがセキュリティを考えると、
かなりいろいろ考える必要がありますので。

少なくとも「SQLインジェクション」
「セッション乗っ取り」「パスワードの暗号化」
などは考慮する必要があるかと思います。

できれば、PHPフレームワークと呼ばれるものを
使うほうが楽です。

自分で一から組まなくても、
そういった機能がプラグインなどで事前に準備されています。

・FuelPHP
・CakePHP
・Symfony

フレームワークの仕組みを使えば、
ある程度セキュリティはしっかりしていますし(もちろん対策はいる)、
バリデーション(検証)の機能なども初めから実装されています。
(例えば、すでに登録があれば警告やメールアドレス形式が誤っていれば、
エラーを出すなど)

ユーザー登録用のテーブルと、
ログイン画面のテーブルをどのように関連付ければいいのでしょうか。

こちらはちょっと意味がとりにくいですが
ログイン情報(ログインIDとパスワード)とユーザー情報(名前や住所など)
を格納するためのテーブルというふうに仮定します。

登録ではログインテーブルとユーザーテーブルに値格納、
ログインではログインテーブルを参照というようになります。

この段階でテーブル間の紐付けというのが何を実現したいかが分かりませんが、
JOINなどを使って紐づけるのが一般的かと思います。
http://www.pursue.ne.jp/jouhousyo/SQLDoc/select22.html

これによりログインIDがxxxのユーザーのプロフィールはyyyのように、
データを取得することができます。

あとはログイン情報とユーザー情報を確実にDBへ格納するために、
トランザクション処理を行うということくらいでしょうか。

これで通信状況などでユーザー情報の格納された場合に、
ログイン情報もDBに格納しないという処理が実現できます。

ログイン情報のみが存在してしまうとテーブル間の不整合が起こり、
都合がよくないので。

勉強のためにフレームワークを使わずにというのはいいですが、
実際の運用を考えればフレームワークを使うほうが短期間で、
いいものが出来上がるかと思います。

もちろん、フレームワークも勉強は必要ですが、
使えるようになると大変便利ですので。

ちなみに、上記はほとんどTeratailで教えてもらった知識です。

たしょう間違っている箇所もあるかと思いますが、
参考にしていただければ幸いです。

また何か私でわかることがあれば聞いてください。
よろしくお願いいたします。

投稿2015/10/28 08:23

1nakaji

総合スコア187

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ken_Mori

2015/10/29 06:49

nakajiさん 大変丁寧な回答、ありがとうございます。 自分の勉強用にと思いチャレンジしていたのですが、 かなり大変みたいですね。。 コツコツとがんばっていきたいと思います。 ありがとうございました。
1nakaji

2015/10/29 08:16

勉強用にということであればやる価値はあるはずです。 単純にDBにユーザー情報テーブルだけを作り、 登録画面からユーザー情報テーブルへデータ格納、 ログイン画面から入力した情報をユーザー情報テーブルと照合し、 一致していればセッションIDを発行までを作られるといいですね。 SQLインジェクション対策や パスワードのハッシュ化など忘れずに行ってくださいね。 ひとつずつこなしていくことが大切と思います。 がんばってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問