0

我有一个 Mysql/PHP 应用程序。我想把它卖 SAS。我正在考虑一家拥有多个可用数据库的托管公司。如果他们登录,我想要一个页面,然后我将他们带到他们的数据库。我将拥有许多具有相同结构的数据库。我需要一种将它们切换到该文件夹​​的方法(我可能会为它们修改一些代码,例如 css)并操作它们的数据库。我可以使用主表进行登录,但如何连接到他们的数据库?我担心安全问题。示例:假设我有 3 个客户。ABC 我在 apache 服务器上设置了 3 个文件夹,在那里复制代码,设置唯一的数据库名称,如 new_db_a、new_db_b、new_db_c。现在,如果我在登录时在内存变量中执行此操作,它将把他带到他的位置。他可以看到网址,并且可以轻松替换另一个字母并运行另一个公司数据库。

我愿意使用 Perl、PHP 或其他任何东西来做这件事。最好的方法是什么?

4

1 回答 1

0

这是一个经典的抽象问题。基本上,您不仅需要从应用程序中抽象出数据库选择过程,还需要从选择屏幕中抽象出来。

把它想象成“问题空间”。每个应用程序都有自己的(即他们的数据库),然后您还有一个,即客户登录系统。为此使用另一个不同的数据库并没有错。与每次登录相关联的将是数据库连接信息。这意味着您可以在 PHP 会话中存储数据库信息以及用户登录的事实(以及他们的登录身份)。

现在,您的其他应用程序需要其数据库层[1] 来学习如何在会话中查找数据库信息。事实上,如果您不仅存储数据库名称,还存储服务器名称、登录名和密码,您可以自由地将一些客户放在同一个数据库服务器上,一些放在另一个数据库服务器上,等等。您只需获得 MySQL 权限正确(不难)。

不过,如果被选中的应用程序决定控制 PHP 会话信息本身,那么最大的缺点可能就是这个问题。有几种方法可以解决这个问题。一种是让它将连接到正确数据库所需的内容复制到自己的会话中。第二个是选择会话单独进行会话管理,并且可能手动进行。但不要将数据库信息存储在 cookie 中。这不仅可以由确定的用户更改,而且您正在将安全性让给不安全的位置 - 浏览器。

[1] 你确实有一个适当的数据库层,不是吗?我的意思是你的所有mysql_query()调用都在一个处理程序后面,要么是定制的,要么是像 PDO 之类的东西。

于 2009-07-10T03:51:41.953 回答