参考書で PHP+MySQLで作る掲示板のプログラムを学んでいます。
MySQLのテーブルには会員一覧のテーブル member と書込記事用テーブル comment があります。
質問は、認証を経てログインした memberテーブルの登録会員が、commentテーブルにアクセスするための、権限を設定するには、どのようにすれば良いか、ということです。
やはり、会員一人ひとりについて DB 接続文とテーブル操作の grant 文を書くのでしょうか?
登録会員に自動的にアクセス権を付与する方法はないでしょうか?
実際の掲示板運用では、どのように行っているのでしょうか。
複数の参考書をあたっても、その辺の解説が見当たらないので質問させて頂きました。
愚問に属することかもしれませんが、よろしくお願いいたします。
No.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ではグループ名を見せるようにしたほうがいいですね。
この回答への補足
ご回答ありがとうございます。私にとってはやや難しい話ですが、お陰様で、少し分かりかけてきた気がします。
理解を深めるために、アクセス権付与についての実装時の例文(スクリプト)を少し示して頂けると有り難いですが・・・。
すみません、補足の補足です。
>コメントを書くときにどのgroupに見せるかを設定すると自動的にaccess control listが設定されます。また、別のところでgroupの追加・削除もできるようにします
の箇所について、有益な参考書かサイトURL をご紹介願えると有難いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- MySQL 【MySQL】本当に困っています。詳しい方、ご教授よろしくお願いします。 1 2023/06/03 14:18
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
phpにて出欠登録管理を作成して...
-
PHPでPostgreSQLのテーブルを表...
-
csvをDBへ読み込んだら、NULLが...
-
ランダム文字列をDBにINSERT
-
変数にNULLを代入したい
-
SQL CASE 文について
-
外部結合で参照列が複数あるSQL
-
エクセルVBAについて
-
VBAをつかってクエリの情報を抽...
-
実行時エラー3131 FROM 句の構...
-
円マークが付加されて保存され...
-
VBA ACCESS SQL...
-
DBで検索結果に該当するデータ...
-
insert1つの処理でもトランザ...
-
Pro*Cの構文エラー
-
phpのエラーについてです
-
sortable ギブアップです…助け...
-
テキストボックスに入れた内容...
-
php データ削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
変数にNULLを代入したい
-
phpにて出欠登録管理を作成して...
-
phpでテーブルを作る際変数によ...
-
csvをDBへ読み込んだら、NULLが...
-
SQLで返り値が空とでる
-
ヒアドキュメントでSQLを書く事...
-
php sqlite count 列数取得
-
OracleからAccessへのインポート
-
変数を組み入れたい
-
日またぎの計算
-
Accessへ日付をINSERT
-
任意の値の取得
-
クエリObjectをforeachで回す時...
-
PHPでいいね機能を作りたいので...
-
会員番号等に利用するダブらな...
-
PHP PDOを利用してカラムの削除...
-
SQL CASE 文について
-
phpを使用し、カテゴリー別に表...
-
トランザクション処理
おすすめ情報