Запись в файл конфигурации динамически с использованием PHP - PullRequest
0 голосов
/ 27 августа 2018

Реализуя приложение SAAS (мультитенантное), у меня возникает ситуация, когда приложению необходимо подключаться к различным базам данных в зависимости от пользователя, который хочет войти в систему. Базы данных предназначены для отдельных учреждений. Допустим, MANAGER-A для учреждения A, MANAGER-B для учреждения B хотят войти в свои различные учреждения.

Процесс, который я реализую, таков: задействованы 3 базы данных: DEFAULT-DB, INSTITUTION-A-DB, INSTITUTION-B-DB. DEFAULT-DB содержит все учетные данные для входа и базы данных каждого пользователя. Это означает, что перед тем, как MANAGER-A сможет войти в свое приложение, произойдет следующее: во-первых, он войдет в DEFAULT-DB, в случае успеха его данные будут извлечены и зарегистрированы и заданы в качестве параметра конфигурации. php файл Это означает, что соединение будет динамическим на основе параметров, выбранных и переданных DEFAULT-DB. У меня такие вопросы:

Как мне записать эти параметры динамически в файл config.php?

Во-вторых, я открыт для консультаций экспертов, если моя реализация не самая лучшая.

Config.php file

<?php 

unset($CFG);
global $CFG;
$CFG = new stdClass();

$CFG->dbtype    = 'mysqli';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'mydb';
$CFG->dbuser    = 'root';
$CFG->dbpass    = '';
$CFG->prefix    = 'my_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbport' => '',
  'dbsocket' => '1',
  'dbcollation' => 'utf8mb4_unicode_ci',
);

$CFG->wwwroot   = 'http://localhost:8888/myapp';
$CFG->dataroot  = '/Applications/MAMP/data/myapp_data';
$CFG->admin     = 'admin';

$CFG->directorypermissions = 0777;

require_once(dirname(__FILE__) . '/lib/setup.php');

Это Moodle. Я попробовал IOMAD, это отличное приложение, но оно не отвечает моим потребностям.

1 Ответ

0 голосов
/ 27 августа 2018

Это плохое решение, ИМХО. Когда вы переписываете файл конфигурации, что происходит, когда приходит следующий запрос, который загружает этот файл? Они загрузят неправильную конфигурацию.

Я бы создал два дополнительных файла конфигурации: config_inst_a.php и config_inst_b.php. Затем установите переменную сеанса, когда пользователь входит в систему, которая содержит имя файла настроек для загрузки. Затем вы можете переопределить информационные переменные базы данных в дополнительных файлах настроек. Если переменная сеанса содержит имя файла, загрузите этот файл ПОСЛЕ конфигурации по умолчанию, и значения подключения к базе данных будут заменены.

Добавлен пример кода:

Действительно, очень кратко:

// Log in user here, and get info about what user company..
$session_start();
$_SESSION['User_ConfigFile'] = 'settings'.$userCompany.'.php';

// More code, or page redirect, or whatever, but the below goes on every page AFTER the default DB is included:

$session_start();
require_once($_SESSION['User_ConfigFile']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...