2011-05-14 40 views
0

我有CodeIgnitor安裝程序根據它加載的子域來選擇數據庫(如下所示)。代碼點火器選擇基於http_host的數據庫

由於我使用臨時表和不同的數據庫,因此我開啓了持續連接。它似乎工作正常,但我只是想知道是否有任何潛在的問題。 (我也用數據庫備份會話)

<?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 */ 

回答

0

它將工作,但用戶可以輸入任何HTTP_HOST值它將從HTTP請求頭採取。所以,你應該使用可用的數據庫檢查HTTP_HOST的值。由於用戶輸入的錯誤值(拼寫錯誤的子域名)會導致數據庫錯誤。

或者您可以使用SERVER_NAME,但請在切換之前查看HTTP_HOST vs. SERVER_NAME討論。

相關問題