2016-04-01 14 views
0

私は複数の企業から複数のユーザーを持つWebサイトを構築しています。各会社には同じテーブルの同じデータベースのコピーが与えられます。唯一の違いは、データベース名です。私は各ユーザが自分の会社に割り当てられたデータベースにのみアクセスできるようにしたいと思います。ユーザーに基づいてデータベースを選択する方法

私は、ユーザーのログインに基づいてデータベースを選択する方法を考え出す必要があります。ユーザーテーブルのセッション変数をデータベース名として使用することは可能ですか?

$dbCon = new mysqli('localhost', 'root', '', $_SESSION['databaseName']);

おそらくクッキーですか?あるいは私は全部が間違っているのを見ている。どんな入力も素晴らしいでしょう。まだ勉強してる。ありがとう

+0

正確に同じ情報を持つ複数のデータベースを持つという背後にある論理は何ですか?私は、会社の異なるユーザーが1つのデータベースにアクセスできるようにすることが有効であると思います。 –

答えて

1

私の提案は、テーブル内のすべてのユーザーアカウントを持つ "ログイン"データベースとして1つのデータベースを選択することです。次に、ログインを認証しているカラムをユーザテーブルに追加します。その列に会社または「割り当てられたデータベース名」を格納することができます。認証されると、DB接続を閉じて、割り当てられた正しいデータベースとの新しい接続を開くことができます。

あなたはあなたのためのスキーマのユーザログイン

LoginTable次ていることができ

0

(username,password,...,company_id)

会社(company_id,....,dbname)

をのでお早めユーザのログインなど、彼は会社のIDに対応するデータベースを選択することができます会社のテーブルから。クエリーは、自然な結合企業とLoginTable.Henceによって単一のコマンドで記述することができます。dbnameを取得した後、それをセッション変数に保存して後で使用することができます。

ご理解いただきありがとうございます。