PHP と MYSQL は初めてで、ユーザーがデータベースにデータを入力するために使用できる Web サイトを作成しようとしています。私がやろうとしていることの例は、さまざまな銀行とそれらが提供するさまざまなサービスのデータベースです。たとえば、シティバンクのユーザーが私のウェブサイトでアカウントを作成し、ログイン ID、パスワード、電子メール、および名前を入力します。彼の銀行(この場合はシティバンク)の。
アカウントを正常に作成してログインすると、彼はシティバンクの「管理者」アカウントになり、シティバンクのみのすべてのデータを作成、削除、挿入、および表示する権限を持ちます。また、アウトレットをさらに作成および削除し、そのアウトレットのサブユーザー アカウントを作成/削除することもできます。サブユーザー アカウントには、管理者アカウントが持つすべての権利から、さらにサブユーザーを作成する権利を差し引いたものがありますが、アウトレットのみに制限されます。管理者とサブの両方のアカウントが Web サイトからログインします。
アカウントに必要と思われる権利をリストアップしました。
Rights to database
SELECT,INSERT,UPDATE,DELETE,(JOIN?)
現在、管理者アカウントに次の表を実装することを考えています。
Admin
+----------+-----------+------------+------------+
| BankID | BankName | UserName | Password |
+----------+-----------+------------+------------+
| 1 | Citibank | CitiAdmin | PassCiti |
| 2 | StanChart | StanAdmin | PassStan |
| 3 | HSBC | HSBCAdmin | PassHSBC |
+----------+-----------+------------+------------+
BankID のタイプは SERIAL ですが、BankName、UserName、および Password は、アカウントの作成時にユーザーが入力します。上記の表を、BankID と BankName を含む 2 つの表に分割しない理由と、ユーザー名とパスワードを含む他のものは、使いやすくするためのものです。分割する必要がなく、過度に正規化していると思うからです。
次の表はサブユーザー アカウント用です。
SubUsers
+------+------------+--------------+-------------+
| ID | OutletID | Name | Password |
+------+------------+--------------+-------------+
| 1 | 1 | CitiSub1 | PassSub1 |
| 2 | 1 | CitiSub2 | PassSub2 |
| 3 | 2 | StanSub1 | PassSub1 |
| 4 | 2 | StanSub2 | PassSub2 |
| 5 | 3 | HSBCSub1 | PassSub1 |
| 6 | 4 | HSBCSub2 | PassSub2 |
+------+------------+--------------+-------------+
これを行うことで、ユーザーのログイン時に、$_POST[User] と $POST[Pass] から userentry を取得し、クエリから引き出されたデータと照合します。
$query="SELECT Username AND Password FROM Admin AND SubUsers";
一致した場合、ユーザーはログインします。これにより、登録済みユーザーのみがデータベースにアクセスできる最初のレベルの検証を実現できます。
ただし、管理者アカウントとサブユーザー アカウントの両方へのアクセスを制限するにはどうすればよいでしょうか。管理者アカウントは銀行に関するデータにのみアクセスでき、サブユーザー アカウントはアウトレットに関するデータにのみアクセスできます。
ログインクエリを
$query="管理者とサブユーザーからユーザー名とパスワードを選択";
最初に管理者からユーザー名とパスワードを選択し、それを介して $_POST[User] と $_POST[Pass] を実行するクエリに、一致がない場合はサブユーザーからユーザー名とパスワードを取得してプロセスを繰り返します。 Admin テーブルまたは SubUser テーブルで一致が発生したかどうかに応じて、結果をセッションに記録します。
ただし、これを行うと、ログイン時にユーザーが利用できる Web ページのみが変更され、データベース自体への実際のアクセスは変更されません。ユーザーが管理者なのかサブユーザーなのか、私はまだプログラミングに慣れていないのでやりたくありません。ウェブページの数を増やすと、必然的に現れるバグの数が増えるだけです。
データベースへのユーザーアクセスを制限する他の方法や、私がやろうとしていることを最適化する他の解決策はありますか?
複数のユーザーに対してphpMyAdminを構成する方法を見てきました-それぞれがデータベースにのみアクセスできます が、私にとっては少し技術的すぎて、テーブルではなくデータベースへのユーザーアクセスを扱っているようです.
アドバイス/ヘルプ/ガイダンスは大歓迎です。