3

私は codeigniter サイトに取り組んでいます。このアプリケーションはさまざまなユーザーによって使用され、各ユーザーは独自の DB (独自のクライアントも) を持っています。このクラウドシステムにアプローチする方法が必要です。アプリケーションフォルダーの単一のコピーがあり、各ユーザーのDBの違いのみがあるためです。codeigniter でサブドメイン ディレクトリを作成し、元のアプリケーションにアクセスできるようにインデックス ファイルと htaccess ファイルを作成しようとしましたが、url にサブドメイン パスが必要であり、そのサブドメイン url パスに従ってデータベースに接続する方法が必要です。

htaccess ファイル。

RewriteEngine On 
RewriteRule /test/(.*) /$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php

この作業を完了するには、どの方法に従う必要がありますか。事前に感謝します。

4

2 に答える 2

2

私はこのようなことを試しました.....私のdatabase.phpファイルで

$active_group = 'default';
$active_record = TRUE;
$uri = $_SERVER['REQUEST_URI'];
$pieces = explode('/', $uri);
if($pieces[1]==""){

            $_SESSION['user_db_username']='**';
            $_SESSION['user_db_pass']='**';
            $_SESSION['user_db_name']='**';
}

else
{
    $link = mysql_connect('**', '**', '**');
    if($link){
        $db_selected = mysql_select_db('**', $link);
        if ($db_selected) 
        {
            $query_arr= "SELECT * FROM ** where domain='".$pieces[1]."' ";
            $queryResult_arr=mysql_query($query_arr,$link);
            while($row=mysql_fetch_assoc($queryResult_arr))
            {
                $_SESSION['user_db_user']=$row['**'];
                $_SESSION['user_db_pass']=$row['**'];
                $_SESSION['user_db_name']=$row['**'];

            }
        }
    }
}


$db['default']['hostname'] = 'localhost';
$db['default']['username'] = $_SESSION['user_db_username'];
$db['default']['password'] = $_SESSION['user_db_pass'];
$db['default']['database'] = $_SESSION['user_db_name'];
于 2013-05-16T09:09:18.050 に答える
2

私たちがしていることは次のとおりです。

config/database.php で、ドメインに基づいて選択される一連の異なる DB 設定を定義します。簡単に調整/拡張できます。

if($_SERVER['SERVER_NAME'] == 'www.stagingserver.com'){
  $active_group = "staging";
  $db['staging']['hostname'] = "95.xxx.xxx.xxx";    
} else {
  $active_group = "default";
}

$db['default']['hostname'] = "localhost:8889";
$db['default']['username'] = "root";
$db['default']['password'] = "root";
$db['default']['database'] = "database";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

$db['staging']['username'] = "movers_user";
$db['staging']['password'] = "staging_user";
$db['staging']['database'] = "staging_database";
$db['staging']['dbdriver'] = "mysql";
$db['staging']['dbprefix'] = "";
$db['staging']['pconnect'] = TRUE;
$db['staging']['db_debug'] = TRUE;
$db['staging']['cache_on'] = FALSE;
$db['staging']['cachedir'] = "";
$db['staging']['char_set'] = "utf8";
$db['staging']['dbcollat'] = "utf8_general_ci";
于 2013-05-13T06:32:27.943 に答える