mysql — Многопользовательская многопользовательская база данных, один исходный код

У меня есть задача создать существующий проект для нескольких арендаторов, так как у приложения много клиентов, поэтому мы решили сделать это.

Мы объединили наш исходный код для работы с любой базой данных, весь исходный код одинаков для всех клиентов.

Теперь ранее соединение с базой данных происходило с использованием одного файла конфигурации, включенного в каждый скрипт.

но, как вы знаете, у источника теперь есть несколько клиентов, базы данных которых отличаются, мы застряли в управлении БД с клиентом.

Intially,

HTTP: // локальный / рабочее пространство / клиент / —> это URL, данный клиенту, теперь я перенаправляю его в index.php, используя htaccess и основываясь на клиенте / я знал, какой клиент будет использовать этот пакет.

есть разные клиенты,
HTTP: // локальный / рабочее пространство / clien1 /
HTTP: // локальный / рабочее пространство / clien2 /
HTTP: // локальный / рабочее пространство / client3 /

и так далее..

Сейчас в index.php перенаправление страницы в login.php, но конфигурация не установлена ​​для БД в соответствии с клиентом.

если кто-то занимался этим, пожалуйста, помогите мне.

Заранее спасибо.

0

Решение

Параметры соединения с базой данных (адрес сервера, имя пользователя / пароль базы данных и имя базы данных) в предложенной вами настройке являются атрибутами ваших пользователей или ваших клиентов (организации ваших пользователей).

Я предполагаю, что вы будете аутентифицировать своих пользователей, просматривая их в общей базе данных, а затем проверяя пароли с помощью password_verify() Когда вы знаете, что у вас есть действительный пользователь, вы можете

  • получить параметры соединения БД из вашей пользовательской базы данных
  • хранить их в переменные сессии php
  • используйте безопасную схему файлов cookie сеанса php, чтобы браузер вашего пользователя мог идентифицировать соответствующий сеанс.
  • после перенаправления или при последующих веб-запросах откройте базу данных, указанную в переменных сеанса

Убедитесь, что размещаемый вами файл cookie не содержит встроенных в него параметров базы данных, или киберпреступник выяснит, как изменить файл cookie для получения несанкционированного доступа.

Но, Pro совет: Создание новой базы данных для каждого клиента, как ни странно, невероятно. Что будет, если

  • Ваш проект успешен, и вы когда-нибудь добавляете тысячу новых клиентов? В этот день вам нужно будет добавить тысячу баз данных.
  • у вас есть 500 активных сессий в какой-то момент? У каждого из них будет собственное соединение с dbms, что делает схемы пула соединений php бесполезными. Пул соединений жизненно важен для хорошей производительности веб-приложения.
  • Вам необходимо выполнить какую-либо отчетную операцию, которая охватывает всех клиентов? Вам нужно будет запустить отчеты для каждого клиента отдельно и выяснить, как объединить их вместе в вашей программе отчетов. Это сложно.

Хорошей практикой для многопользовательских онлайн-приложений является добавление значений идентификатора клиента или идентификатора пользователя в каждую запись данных и использование таких предложений запроса, как WHERE customer_id = ? (текущий клиент), чтобы отделить данные пользователя от пользователя.

Надеюсь, еще не слишком поздно пересмотреть ваше проектное решение об использовании нескольких баз данных.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]