我使用这个php邮件应用程序,我试图在一个文件夹下拥有多个数据库,而不必一遍又一遍地重复。数据库连接正在使用smarty模板,我不太确定如何进行此操作。

应用程序文件:http://pommo-ext.googlecode.com/svn/trunk/

我正在尝试这样做:

If username/password is Smith => connect to DB_1
If username/password is John => connect to DB_2
If username/password is Jim => connect to DB_3


这是数据库连接器的config.php文件:

http://pommo-ext.googlecode.com/svn/trunk/config.sample.php

[db_hostname] = localhost
[db_username] = root
[db_password] = root
[db_database] = db_1
[db_prefix] = db_


这也是数据库的类。
http://pommo-ext.googlecode.com/svn/trunk/inc/classes/pommo.php

最佳答案

我对Pommo并不熟悉,但是从您的问题中我发现您正在尝试通过安装一个应用程序,使用不同的数据库设置来创建某种多用户环境。对于任何应用程序,通常都没有直接或琐碎的方法来做到这一点。

首先,您必须重写Pommo的所有内部逻辑,以确保它们根据用户名使用不同的数据库连接。但是,在这种情况下,用户名不能存储在任何数据库中,因为必须根据用户名选择数据库。您可以为该信息添加另一个数据库,但这很愚蠢。

其次,您想要不同的数据库,但是我无法想象您为什么想要那样的数据库。对于初学者,为什么不使用表前缀?其次,我确定Pommo具有某种多用户环境,因此您可以与多个用户共享同一安装。也许这是不可能的,但是您可以做两件事:


开始寻找其他应用程序。
开始寻找已经写了您想要的内容的其他爱好者。


最后,Smarty不必对数据库连接做任何事情。我想象Pommo将Smarty用作模板或将Smarty模板放入数据库中,但是实际的数据库设置必须在PHP中进行。



但是,如果您不需要某些“不错”的解决方案,已经准备好应对严重的丑陋并且想要快速解决方案,则可以使用PHP会话。您可以通过在登录页面上请求将用户名存储在$_SESSION['custom_username']中。但是请注意,由于数据库依赖于用户名,因此Pommo尝试验证在其数据库中传递的用户名之前,必须具有登录页面。我建议独立于Pommo安装的单独页面。也许您想创建类似使用GET参数的文件之类的东西,设置会话并转发到应用程序。

之后,您可以在config.php中检查会话中的用户名,并根据该用户名更改属性。

为此,必须正确设置PHP会话,并且如果Pommo已经使用会话,则可以重用该功能,但请确保该功能不会干扰Pommo对其的使用。

关于php - 一个应用程序具有多个数据库连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10917023/

10-13 02:00
查看更多