我有一个Mysql / PHP应用程序。我想把它卖给SAS。我在考虑一个拥有多个数据库的托管公司。我想要一个页面,他们登录,我把他们带到他们的数据库。我将拥有许多具有相同结构的数据库。我需要一种方法将它们切换到该文件夹(我可以像css一样修改它们的一些代码)并操作它们的数据库。 我可以使用主表进行登录,但如何连接到他们的数据库?我担心安全问题。 示例:假设我有3个客户。 A B C. 我在apache服务器上设置了3个文件夹,在那里复制代码,设置了唯一的数据库名称,如new_db_a,new_db_b,new_db_c。 现在如果我在一个内存变量中执行它,当它登录它将把他带到他的位置。他可以看到网址,可以轻松替换另一封信并运行其他公司数据库。
我愿意使用Perl,PHP或其他任何方法来做到这一点。 什么是最好的方法呢?
答案 0 :(得分:0)
这是一个经典的抽象问题。基本上,您需要从应用程序和选择屏幕中抽象出数据库选择过程。
将其视为“问题空间”的术语。每个应用程序都有自己的(即他们的数据库),然后你还有一个,即客户登录系统。为此使用另一个不同的数据库没有任何问题。与每次登录相关联的将是数据库连接信息。这意味着您可以将数据库信息存储在PHP会话中,同时还存储用户已登录的事实(以及他们以何种方式登录)。
现在,您的其他应用程序需要了解如何在会话中查找数据库信息的数据库层[1]。事实上,如果你不只是存储数据库名称,而是存储服务器名称,登录名和密码,你可以自由地将一些客户放在同一个数据库服务器上,一些客户放在另一个上,等等。你只需要获得MySQL权限正确(不难)。
但是,这个软膏中可能最大的一点是,如果选择的应用程序决定自己控制PHP会话信息。有几种方法可以解决这个问题。一个是它将自己的会话复制到连接到正确数据库所需的内容。第二种是选择会话单独进行会话管理,也可以手动进行。但是不要将数据库信息存储在cookie中。这不仅可以由确定的用户更改,而且还可以将安全性转移到不安全的位置 - 浏览器。 [1]你有一个合适的数据库层,不是吗?而且我的意思是你在处理程序后面有你所有的mysql_query()
调用,无论是定制还是类似PDO。