PHPとMySQLの勉強を兼ねてサイトを作っています。
商品のレビューサイトです。例えば「りんご」「みかん」のような商品があって、それに対して評価(レビュー)ができるサイトです。
これをAmazonや@コスメのような会員制のレビューサイトにしたいです。
自分のスキルでは無理と思っていたのですが、Pear authを使えば出来るのでは?と思っています。
Pear authの仕組みは、
1.IDとパスワードをフォームで入力してサイトの中に
2.そしてその情報をログアウトするまでずっと引き継げる
3.レビューを書き込む際に自分の会員IDをMySQLに飛ばせる
このようなものだと期待しています。1と2はともかく3に関しては可能でしょうか?
具体的には、
INSERT INTO review (reviewer_id , review_contents)
VALUES ('$reviewer_id','$review_contents')
このようなSQLでMySQLにデータを格納したいのですが、変数$reviewer_idにログインしている人の会員IDを入れるような事は可能なのでしょうか?
漠然とした質問で申し訳ないのですが、簡単で構いませんのでアドバイス下さい。
自分で調べる際にスムーズに進みます。
みなさんよろしくお願いします。
基本的なPEAR::Authの使い方は、Pear::Auth::Auth()で確認してください。
ログイン済みのユーザ名はAuth::getUsername()で取得可能です。
この内容をSQLのINSERTで使うだけでご要望の処理は可能です。
今回の質問の場合、複数テーブルを使いますよね。
その場合、重要になってくるのがDBの設計です。
どのような情報を、どのテーブルに持ち、相互の関連付けはどのように行うのかを考えなければいけません。
以下にサンプルを載せておきます。(あくまでもサンプルですのでご注意ください。)
列名 | 説明 | 補足事項(制約など) |
---|---|---|
id | ユーザID | primary key, auto_increment |
name | ユーザ名 | unique |
password | パスワード | MD5ハッシュ値を格納するのが一般的 |
列名 | 説明 | 補足事項(制約など) |
---|---|---|
id | アイテムID | primary key, auto_increment |
name | アイテム名 | |
description | アイテム説明 |
列名 | 説明 | 補足事項(制約など) |
---|---|---|
id | レビューID | primary key, auto_increment |
item_id | 商品ID | foreign key (itemテーブルのidを参照) |
reviewer_id | レビューしたユーザID | foreign key (userテーブルのidを参照) |
review_contents | レビュー内容 |
上記のようにした場合、reviewを追加する場合には、reviewテーブルにAuth::getUsername()で取得した名前をreviewer_idとしてINSERTすれば良いです。
PEAR::Authには他にも便利な機能が沢山ありますので、PEARのマニュアルを一通り確認してみてください。
参考になれば幸いです。
おお、Auth::getUsername()で出来るのですね。まさにピンポイントで欲しかった情報です。ありがとうございます。ちょっと敷居は高そうですけど勉強と思ってPEAR::Authにチャレンジしてみようと思います。
テーブル設計に関しては自力で作れるようになってきました。全てのテーブルに第3正規化を施しているつもりです。その辺はACCESSで遊んでいた時になんとなく身に付いていたようです。
ご丁寧にありがとうございました。