gpt4 book ai didi

php - 使用 Codeigniter 3 进行多站点 |数据库自动切换

转载 作者:行者123 更新时间:2023-11-29 21:47:27 25 4
gpt4 key购买 nike

大家好,我需要一些使用 Codeigniter 的多站点帮助。

因此,我正在开发一个多站点系统,不同的公司在其中注册并获得其子域(例如,公司 ABC 转到 www.system.com 并注册,然后它们被赋予子域abc.system.com),然后生成数据库abc(加密)并由系统创建默认表。

所有公司都使用相同的界面,因此唯一改变的是数据库。

我的想法是每次有人访问abc.system.com时,我都会爆炸(abc.system.com),然后对abc进行加密,然后更改数据库连接config/database.php

$db['company'] = array(
'database' => 'encrypted(abc)',

用户将使用$this->db->query

但是现在当我想到这一点时,当其他人碰巧登录xyz.system.com时,就会发生灾难,因为连接将再次更改为加密(xyz)因为他/她还将使用 $this->db->query

记住系统是一个,只有数据库在改变。

我不明白使用.htaccess的多站点技术

现在被困的人们对如何解决这个问题有什么想法吗?我正在使用 codeigniter 3。

最佳答案

我可以建议您在 MY_Controller 类中初始化第二个“公司”数据库,您可以在所有 Controller 中扩展它(也许只有那些与公司相关的 Controller 。

通过 CI 默认配置,您可以在核心文件夹中创建 MY_Conroller,它将扩展 CI_Controller,并且 Controller 中的任何 Controller 都可以扩展它。

在这个 MY_Controller 中,您将能够解析主机(域)并设置正确的数据库..示例:

class My_Controller extends CI_Controller {
protected $dbC;

public function __construct(){
parent::__construct();

//HERE YOU CAN MAKE THE 2nd DB load after you detect that you are in valid subdomain
$expHost = explode('.', $_SERVER['HTTP_HOST']));
if( count($expHost) === 3 && $expHost !== 'www') {
$dbC_config = // Get your DB COMPANY configurations or input it here as array..
$dbC_config['database'] = 'encrypted('.$expHost[0].')';
$this->dbC = $this->load->database($dbC_config);
}
}
}

关于php - 使用 Codeigniter 3 进行多站点 |数据库自动切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33994010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com