Php 基于http_主机的代码点火器选择数据库

Php 基于http_主机的代码点火器选择数据库,php,codeigniter,Php,Codeigniter,我有codeignator设置来根据加载的子域选择数据库,如下所示 当我使用临时表和不同的数据库时,我关闭了持久连接。它似乎工作正常,但我只是想知道是否有任何潜在的问题。我还使用数据库支持的会话 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $active_group = "default"; $active_record = TRUE; $phppos_client_name = s

我有codeignator设置来根据加载的子域选择数据库,如下所示

当我使用临时表和不同的数据库时,我关闭了持久连接。它似乎工作正常,但我只是想知道是否有任何潜在的问题。我还使用数据库支持的会话

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$active_group = "default";
$active_record = TRUE;
$phppos_client_name = substr($_SERVER['HTTP_HOST'], 0, strpos($_SERVER['HTTP_HOST'], '.'));
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "USER";
$db['default']['password'] = "PASSWORD";
$db['default']['database'] = 'db_'.$phppos_client_name;
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "phppos_";
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";


/* End of file database.php */
/* Location: ./application/config/database.php */

它可以工作,但用户可以为HTTP\U主机输入任何值,因为它将从HTTP请求头中获取。因此,您应该使用可用的数据库检查HTTP_主机的值。由于用户输入的值错误,拼错的子域名将导致数据库错误

或者您可以使用服务器名称,但请在切换前查看讨论