2012-06-06 52 views
0

即时通讯使用此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 

这是DB连接我的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_ 

此处也是DB的类。 http://pommo-ext.googlecode.com/svn/trunk/inc/classes/pommo.php

回答

1

我不熟悉Pommo,但是从你的问题中我发现你试图创建一种多用户环境,只安装一个应用程序,但使用不同的数据库设置。通常(对于任何应用程序)没有直接或无足轻重的方法来执行此操作。

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

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

  • 开始寻找一些其他的应用程序。
  • 开始寻找一些已经写了你想要的东西。

最后,Smarty不必对数据库连接做任何事情。我想像Pommo使用Smarty进行模板化或将Smarty模板放入数据库中,但实际的数据库设置必须发生在PHP的某处。然而,如果你不需要一些'很好'的解决方案,为严重的丑陋做好准备并想要一个快速的解决方案,你可以使用PHP会话。您可以通过在登录页面上请求,将用户的用户名存储在$_SESSION['custom_username']中。但请注意,在Pommo尝试验证在其数据库中传递的用户名之前,您必须拥有登录页面,因为数据库依赖于用户名。我会建议一个独立的页面,独立于您的Pommo安装。也许你想创建一个类似于使用GET参数的文件,设置会话并转发给应用程序。

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

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

+0

是的即时寻找一个快速解决方案,诚实不想花太多时间在这个。你知道如何做到这一点的任何示例链接? – Dony

+0

我试图解释你通常会如何修改任何应用程序来做你想做的事情。这不仅仅是编程一个简单的转发/登录页面并修改你的config.php。然而,由于这不是直截了当的,我不认为有这样的完成和编写的教程。你真的只限于这样做吗?没有另一种解决方案更容易吗? – ralphje

+0

是的,创建一个新的登录页面可能是解决这个问题的最好方式,但是新的登录页面会绕过pommo登录页面,还是会重新指向登录页面? – Dony

相关问题