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_

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

4

1 回答 1

1

我对 Pommo 不熟悉,但从您的问题来看,我认为您正在尝试通过安装一个应用程序,但使用不同的数据库设置来创建某种多用户环境。通常(对于任何应用程序)没有直接或简单的方法来做到这一点。

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

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

  • 开始寻找其他应用程序。
  • 开始寻找其他已经写过你想要的东西的爱好者。

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


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

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

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

于 2012-06-06T15:22:47.230 回答