0

Mysql/PHP アプリケーションがあります。SASに売りたい。複数のデータベースを利用できるホスティング会社を考えています。彼らがログインしたページが欲しいので、彼らのデータベースに連れて行きます。同じ構造を持つ多くのデータベースがあります。それらをそのフォルダーに切り替えて(cssなどのコードを変更する場合があります)、データベースを操作する方法が必要です。ログインにマスターテーブルを使用できますが、データベースに接続するにはどうすればよいですか? セキュリティが心配です。例: 3 人の顧客がいるとします。ABC Apache サーバーに 3 つのフォルダーをセットアップし、そこにコードをコピーして、new_db_a、new_db_b、new_db_c などの一意のデータベース名を設定しました。ログイン時にメモリ変数でそれを行うと、彼は彼の場所に連れて行かれます。彼は URL を見ることができ、簡単に別の文字に置き換えて、別の会社のデータベースを実行することができました。

これを行うには、Perl、PHP、または何でも使用したいと思っています。これを行う最良の方法は何ですか?

4

1 に答える 1

0

これは古典的な抽象化の問題です。基本的には、アプリケーションだけでなく、選択画面からもデータベース選択プロセスを抽象化する必要があります。

「問題空間」という用語を考えてみてください。各アプリケーションには独自の(つまりデータベース)があり、もう1つは顧客ログインシステムです。このために別の異なるデータベースを使用しても問題はありません。各ログインに関連付けられるのは、データベース接続情報です。これは、ユーザーがログインしているという事実(およびユーザーが誰としてログインしているのか)とともに、データベース情報をPHPセッションに保存できることを意味します。

ここで、他のアプリケーションでは、セッションでデータベース情報を検索する方法を教えるために、データベースレイヤー[1]が必要です。実際、データベース名だけでなく、サーバー名、ログイン、パスワードも保存すると、同じデータベースサーバーに顧客を配置したり、別のサーバーに顧客をまとめたりすることができます。MySQLのアクセス許可を取得するだけです。正しい(難しいことではない)。

ただし、おそらくこの軟膏の最大の利点は、選択されているアプリケーションがPHPセッション情報自体を制御することを決定した場合です。これを解決するにはいくつかの方法があります。1つは、正しいデータベースに接続するために必要なものを独自のセッションにコピーすることです。2つ目は、選択セッションがセッション管理を個別に、場合によっては手動で行うことです。ただし、データベース情報をCookieに保存しないでください。これは、決心したユーザーが変更できるだけでなく、セキュリティを安全でない場所(ブラウザ)に譲渡していることになります。

[1]適切なデータベースレイヤーがありますね。mysql_query()つまり、特注またはPDOのようなもののいずれかで、ハンドラーの背後にすべての呼び出しがあることを意味します。

于 2009-07-10T03:51:41.953 に答える