2010-09-14 31 views
0

我正在爲客戶端編寫一個使用Codeigniter的Web應用程序,並使用其內部開發計算機之一。由於安全限制,Web服務器端口只能在內部使用,並且不會暴露給外部世界,因此我必須通過SSH隧道訪問它。所以我打這樣的網絡服務器:http://localhost/path_to_data在CodeIgniter中更改表單操作位置

我使用標準Form Helper在Codeigniter中創建表單,唯一的問題是表單的動作指向Codeigniter配置文件的框的位置。我無法更改此配置值,因爲我們有內部開發人員訪問此內容,因此不會使用SSH隧道,因此他們會通過「真實」URL訪問它。

有沒有辦法強制Codeigniter使用窗體指向自己的相對路徑而不是完整的路徑?

+0

http://codeigniter.com/forums/viewthread/60181/ – Wrikken 2010-09-14 17:28:15

+0

ack,我沒有注意到你的評論之前提交我的答案。對於那個很抱歉。 – Fanis 2010-09-14 17:35:27

回答

0

form_open()使用config.php中設置的基礎url:$config['base_url']。嘗試根據$_SERVER['SERVER_NAME']進行條件。這樣,內部開發人員使用「http://demo.local」以及使用「http://localhost/」的內部開發人員將能夠根據他們訪問服務器的方式來查看適當的絕對URL。

$config['base_url'] = 'http://demo.local/' ; 
if ($_SERVER['SERVER_NAME'] == 'localhost') { 
    $config['base_url'] = http://localhost/' ; 
} 

作爲旁註,我注意到,如果form_open()檢查傳遞的參數是一個完整的URL(具體而言,如果它包括一個「://」),並且如果它不那麼它並將其設置爲不表單的操作任何處理。所以你可以打電話form_open("http://localhost/form_submit"),並在沒有base_url的情況下使用它。

+0

完美的工作,不知道爲什麼我沒有想到自己。謝謝! – Khirok 2010-09-14 19:18:24

+0

完美的工作,不知道爲什麼我沒有想到自己。謝謝! – Khirok 2010-09-14 19:18:24