Настройка нескольких баз данных MySQL - PullRequest
0 голосов
/ 10 июля 2009

У меня есть приложение Mysql / PHP. Я хочу продать это SAS. Я думаю о хостинговой компании, которая имеет несколько доступных баз данных. Я хочу страницу, где они войдут, и я беру их в свою базу данных. У меня будет много баз данных с одинаковой структурой. Мне нужен способ, чтобы переключить их в эту папку (я могу изменить некоторый код для них, например, CSS) и управлять их базой данных. Я мог бы использовать основную таблицу для входа в систему, но как подключиться к их базе данных? Я обеспокоен безопасностью. Пример: допустим, у меня 3 клиента. A B C Я установил 3 папки на сервере Apache, скопировал туда код, установил уникальные имена баз данных, такие как new_db_a, new_db_b, new_db_c. Теперь, если я сделаю это в переменной памяти, когда войдет в систему, он попадет на его место. Он может видеть URL-адрес и может легко заменить другое письмо и запустить другую базу данных компаний.

Я готов использовать Perl, PHP или любой другой для этого. Какой лучший способ сделать это?

1 Ответ

0 голосов
/ 10 июля 2009

Это классическая проблема абстракции. По сути, вам необходимо абстрагироваться от процесса выбора базы данных не только из приложения, но и с экрана выбора.

Думайте об этом в терминах «проблемного пространства». Каждое приложение имеет свое собственное (то есть свою базу данных), а затем у вас есть еще одно, которое представляет собой систему входа клиента. Нет ничего плохого в использовании другой, другой базы данных для этого. С каждым логином будет связана информация о подключении к базе данных. Это означает, что вы можете хранить информацию о базе данных в сеансе PHP вместе с тем фактом, что пользователь вошел в систему (и кем он вошел в систему).

Теперь вашему другому приложению нужен уровень базы данных [1], чтобы научиться искать информацию базы данных в сеансе. Фактически, если вы храните не только имя базы данных, но и имя сервера, логин и пароль, у вас есть свобода размещать некоторых клиентов на одном сервере базы данных, некоторых вместе на другом и т. Д. Вы просто получаете разрешения MySQL правильно (не сложно).

Вероятно, самая большая ошибка в этой мази, однако, состоит в том, что, если выбранное приложение решает взять на себя управление информацией сеанса PHP. Есть несколько способов решить эту проблему. Один из них - скопировать в свой сеанс то, что ему нужно для подключения к правильной базе данных. Во-вторых, сеанс выбора должен выполнять управление сеансами отдельно и, возможно, вручную. Но не храните информацию базы данных в куки. Это может быть изменено не только определенным пользователем, но и передачей безопасности в небезопасное место - браузер.

[1] У вас есть правильный слой базы данных, не так ли? Под этим я подразумеваю, что все ваши mysql_query() вызовы находятся за обработчиком, либо на заказ, либо что-то вроде PDO.

...