Conexão em bases separadas - (Multi Tenancy)
Tenho o seguinte senário para a minha aplicação:
Tenho uma aplicação PHP + MySql, com conexão em PDO, preciso que a aplicação seja compartilhada com todas as empresas cadastradas, porém cada empresa terá sua base de dados separadamente.
ESTRUTURA DA APLICAÇÃO
Conexão:
1 - Con.class.php => Responsável pela conexão com o banco usando PDO - SingleTon
2 - Config.php => Através de define(); recebe os valores a serem passados para conexão - (Host, User, DB...)
Banco de Dados Central:
3 - TABELA Empresas => Recebe as empresas que vão usar a aplicação, contendo as informações de conexão - (Host, User, DB, Senha)
Bancos de Dados do Clientes (db1, bd2, db3.....):
4 - TABELA Usuários => Contém as informações dos usuários, inclusive o "ID_EMPRESA" para referenciar a qual empresa o mesmo pertence além das informações de login- (user_login, user_senha, user_email...)
Como eu posso fazer para que cada empresa log na sua base que será criada ao cadastrar as empresas, além de não ter o conhecimento avançado no PHP, não encontrei uma ajuda sobre isso pesquisando.
CÓDIGOS
Con.class.php
Config.php
Será que é possível realizar estão ação?
Quando o usuário entrar com o Login e Senha, verificar a qual empresa ele pertence, e levar as informações de conexão do banco de dados e ele ser conectado na base da empresa a qual ele pertence.
Obrigado!
Tenho uma aplicação PHP + MySql, com conexão em PDO, preciso que a aplicação seja compartilhada com todas as empresas cadastradas, porém cada empresa terá sua base de dados separadamente.
ESTRUTURA DA APLICAÇÃO
Conexão:
1 - Con.class.php => Responsável pela conexão com o banco usando PDO - SingleTon
2 - Config.php => Através de define(); recebe os valores a serem passados para conexão - (Host, User, DB...)
Banco de Dados Central:
3 - TABELA Empresas => Recebe as empresas que vão usar a aplicação, contendo as informações de conexão - (Host, User, DB, Senha)
Bancos de Dados do Clientes (db1, bd2, db3.....):
4 - TABELA Usuários => Contém as informações dos usuários, inclusive o "ID_EMPRESA" para referenciar a qual empresa o mesmo pertence além das informações de login- (user_login, user_senha, user_email...)
Como eu posso fazer para que cada empresa log na sua base que será criada ao cadastrar as empresas, além de não ter o conhecimento avançado no PHP, não encontrei uma ajuda sobre isso pesquisando.
CÓDIGOS
Con.class.php
<?php class Conn { private static $Host = SIS_DB_HOST; private static $User = SIS_DB_USER; private static $Pass = SIS_DB_PASS; private static $Dbsa = SIS_DB_DBSA; private static $Connect = null; private static function Conectar() { try { if (self::$Connect == null): $dsn = 'mysql:host=' . self::$Host . ';dbname=' . self::$Dbsa; $options = [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8']; self::$Connect = new PDO($dsn, self::$User, self::$Pass, $options); self::$Connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); endif; } catch (PDOException $e) { PHPErro($e->getCode(), $e->getMessage(), $e->getFile(), $e->getLine()); die; } return self::$Connect; } public static function getConn() { return self::Conectar(); } private function __construct() { } private function __clone() { } private function __wakeup() { } }
Config.php
if ($_SERVER['HTTP_HOST'] == $urlcentral): define('HOST', $linkBanco); define('USER', $userBanco); define('PASS', $senhaBanco); define('DBSA', $nomeBanco); else: define('HOST_CLIENTE', $linkBancoCliente); define('USER_CLIENTE', $userBancoCliente); define('PASS_CLIENTE', $senhaBancoCliente); define('DBSA_CLIENTE', $nomeBancoCliente); endif;
Será que é possível realizar estão ação?
Quando o usuário entrar com o Login e Senha, verificar a qual empresa ele pertence, e levar as informações de conexão do banco de dados e ele ser conectado na base da empresa a qual ele pertence.
Obrigado!
comentários (0)
suspender
Lista de Respostas:
20/07/2018 6:22pm
(~6 anos atrás)
(~6 anos atrás)
Boa noite, terá que ter config para cada cliente, sendo ele na mesma base ou em base separada.