PHPのPear authについて質問です(PHP5 MySQL5)


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を入れるような事は可能なのでしょうか?


漠然とした質問で申し訳ないのですが、簡単で構いませんのでアドバイス下さい。
自分で調べる際にスムーズに進みます。

みなさんよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/03/29 19:14:15
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:bonlife No.1

回答回数421ベストアンサー獲得回数75

ポイント100pt

基本的なPEAR::Authの使い方は、Pear::Auth::Auth()で確認してください。

ログイン済みのユーザ名はAuth::getUsername()で取得可能です。

この内容をSQLのINSERTで使うだけでご要望の処理は可能です。

今回の質問の場合、複数テーブルを使いますよね。

その場合、重要になってくるのがDBの設計です。

どのような情報を、どのテーブルに持ち、相互の関連付けはどのように行うのかを考えなければいけません。

以下にサンプルを載せておきます。(あくまでもサンプルですのでご注意ください。)

  • user (認証に利用するテーブル)
列名 説明 補足事項(制約など)
id ユーザID primary key, auto_increment
name ユーザ名 unique
password パスワード MD5ハッシュ値を格納するのが一般的
  • item
列名 説明 補足事項(制約など)
id アイテムID primary key, auto_increment
name アイテム名
description アイテム説明
  • review
列名 説明 補足事項(制約など)
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のマニュアルを一通り確認してみてください。

参考になれば幸いです。

id:tokyosmash

おお、Auth::getUsername()で出来るのですね。まさにピンポイントで欲しかった情報です。ありがとうございます。ちょっと敷居は高そうですけど勉強と思ってPEAR::Authにチャレンジしてみようと思います。


テーブル設計に関しては自力で作れるようになってきました。全てのテーブルに第3正規化を施しているつもりです。その辺はACCESSで遊んでいた時になんとなく身に付いていたようです。


ご丁寧にありがとうございました。

2007/03/29 19:12:48

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません