アプリ版:「スタンプのみでお礼する」機能のリリースについて

参考書で PHP+MySQLで作る掲示板のプログラムを学んでいます。
MySQLのテーブルには会員一覧のテーブル member と書込記事用テーブル comment があります。
質問は、認証を経てログインした memberテーブルの登録会員が、commentテーブルにアクセスするための、権限を設定するには、どのようにすれば良いか、ということです。
やはり、会員一人ひとりについて DB 接続文とテーブル操作の grant 文を書くのでしょうか?
登録会員に自動的にアクセス権を付与する方法はないでしょうか?
実際の掲示板運用では、どのように行っているのでしょうか。
複数の参考書をあたっても、その辺の解説が見当たらないので質問させて頂きました。
愚問に属することかもしれませんが、よろしくお願いいたします。

A 回答 (2件)

#1さんの回答通りなのですが、もう少し噛み砕いて書きます。


MySQLへのアクセスはすべてPHPを実行しているソフトウェアの権限で行うのが普通です。よって、誰に読み書きの権限を与えるかというのはすべてプログラムが読めるデータベース上に置いてあり、プログラムの中でそれを元に表示をしたり、アクセス禁止を伝えたりすると思います。

当然、ログインに使うパスワードなどもDB上に置きますが、通常は暗号強度のあるハッシュ関数を通したハッシュ値を置くと思います。ナイーブに作るとアタックの時の探索空間が狭くなるので、ランダムな値をsaltとしてつけて計算するのが普通です。自分だったらCRYPT_SHA256が使えるならそれで計算しますね。DESやMD5は今や昔という感じがしますし。
http://www.php.net/manual/ja/function.crypt.php

この場合の実装では、member、commentの他に最低でもgroupというテーブルとaccess_control_listというテーブルがあったほうが良いでしょう。groupというテーブルではどのメンバーがどのグループに属しているかを示し、access_control_listではどのグループがどのcommentを読めるかを示します。コメントを書くときにどのgroupに見せるかを設定すると自動的にaccess control listが設定されます。また、別のところでgroupの追加・削除もできるようにします。利便性を考えるとグループ名のテーブルも作り、UIではグループ名を見せるようにしたほうがいいですね。

この回答への補足

ご回答ありがとうございます。私にとってはやや難しい話ですが、お陰様で、少し分かりかけてきた気がします。
理解を深めるために、アクセス権付与についての実装時の例文(スクリプト)を少し示して頂けると有り難いですが・・・。

補足日時:2012/11/24 11:17
    • good
    • 0
この回答へのお礼

すみません、補足の補足です。
>コメントを書くときにどのgroupに見せるかを設定すると自動的にaccess control listが設定されます。また、別のところでgroupの追加・削除もできるようにします

の箇所について、有益な参考書かサイトURL をご紹介願えると有難いです。

お礼日時:2012/11/24 11:36

MySQLへのアクセスは(ログインした会員の権限とは無関係に)phpスクリプトで設定したユーザでアクセスします。

ログインした会員の権限によって、phpスクリプトでどういう処理を選択可能にするかが違ってくるだけです。

レンタルサーバなどではユーザの追加自体が出来なかったりもします。あくまでも一定の権限を持ったひとつのユーザで(phpスクリプトは)処理します。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。なるほど、基本的なことは理解できました。もう少し勉強します。

お礼日時:2012/11/24 11:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!