2012-06-06 1 views
0

Я использую это приложение для почтовой рассылки php, и я пытаюсь иметь несколько баз данных в одной папке, не повторяя это снова и снова. Соединение db использует шаблон 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 для разъема DB:

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

ответ

1

Я не знаком с Pommo, но из вашего вопроса я полагаю, что вы пытаетесь создать какую-то многопользовательскую среду с одной установкой приложения, но с разными настройками базы данных. Обычно (для любого приложения) нет прямого или тривиального способа сделать это.

Прежде всего, вы должны переписать всю внутреннюю логику Pommo, чтобы убедиться, что они используют разные подключения к базе данных на основе имени пользователя. Однако имя пользователя не может быть сохранено в любой базе данных, поскольку база данных должна быть выбрана на основе имени пользователя. Вы можете добавить другую базу данных для информации thsi, но это просто глупо.

Во-вторых, вам нужны разные базы данных, но я не могу себе представить, зачем вам это нужно. Для начала, почему бы не использовать префиксы таблиц? Во-вторых, я уверен, что у 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