2012-06-06 100 views
0

即時通訊使用此PHP郵件應用程序,我試圖讓一個文件夾下的多個數據庫,而不必重複這一遍又一遍。數據庫連接使用smarty模板,我不太清楚如何去做這件事。多個數據庫連接爲一個應用程序

應用程序文件:http://pommo-ext.googlecode.com/svn/trunk/

我試圖做到這一點:

If username/password is Smith => connect to DB_1 
If username/password is John => connect to DB_2 
If username/password is Jim => connect to DB_3 

這是DB連接我的config.php文件:

http://pommo-ext.googlecode.com/svn/trunk/config.sample.php

[db_hostname] = localhost 
[db_username] = root 
[db_password] = root 
[db_database] = db_1 
[db_prefix] = db_ 

此處也是DB的類。 http://pommo-ext.googlecode.com/svn/trunk/inc/classes/pommo.php

回答

1

我不熟悉Pommo,但是從你的問題中我發現你試圖創建一種多用戶環境,只安裝一個應用程序,但使用不同的數據庫設置。通常(對於任何應用程序)沒有直接或無足輕重的方法來執行此操作。

首先,您必須重寫Pommo的所有內部邏輯,以確保它們使用基於用戶名的不同數據庫連接。但是,在這種情況下,用戶名不能存儲在任何數據庫中,因爲必須根據用戶名選擇數據庫。你可以爲這些信息添加另一個數據庫,但這很愚蠢。

其次,你想要不同的數據庫,但我無法想象你爲什麼要這樣做。對於初學者,爲什麼不使用表前綴?其次,我確信Pommo具有某種多用戶環境,因此您可以與多個用戶共享相同的安裝。也許這是不可能的,但你可以做兩件事:

  • 開始尋找一些其他的應用程序。
  • 開始尋找一些已經寫了你想要的東西。

最後,Smarty不必對數據庫連接做任何事情。我想像Pommo使用Smarty進行模板化或將Smarty模板放入數據庫中,但實際的數據庫設置必須發生在PHP的某處。然而,如果你不需要一些'很好'的解決方案,爲嚴重的醜陋做好準備並想要一個快速的解決方案,你可以使用PHP會話。您可以通過在登錄頁面上請求,將用戶的用戶名存儲在$_SESSION['custom_username']中。但請注意,在Pommo嘗試驗證在其數據庫中傳遞的用戶名之前,您必須擁有登錄頁面,因爲數據庫依賴於用戶名。我會建議一個獨立的頁面,獨立於您的Pommo安裝。也許你想創建一個類似於使用GET參數的文件,設置會話並轉發給應用程序。

之後,在config.php中,您可以檢查會話中的用戶名並根據該用戶名更改屬性。

爲此,您必須正確設置您的PHP會話,並且如果Pommo已經使用會話,您可能可以重用該功能,但要確保它不會干擾Pommo對它的使用。

+0

是的即時尋找一個快速解決方案,誠實不想花太多時間在這個。你知道如何做到這一點的任何示例鏈接? – Dony

+0

我試圖解釋你通常會如何修改任何應用程序來做你想做的事情。這不僅僅是編程一個簡單的轉發/登錄頁面並修改你的config.php。然而,由於這不是直截了當的,我不認爲有這樣的完成和編寫的教程。你真的只限於這樣做嗎?沒有另一種解決方案更容易嗎? – ralphje

+0

是的,創建一個新的登錄頁面可能是解決這個問題的最好方式,但是新的登錄頁面會繞過pommo登錄頁面,還是會重新指向登錄頁面? – Dony

相關問題