2014-01-22 30 views
0

我目前正在開發一個PHP應用程序,希望即將投入生產使用。檢測應用程序正在訪問的網址從

我需要幫助的是檢測應用程序訪問什麼URL即dev.local,testing.domain.com或app.domain.com,然後使用正確的MySQL數據庫,即開發的app_test和生產服務器的測試和app_prod。

除此之外,我還希望能夠修改內部URL以匹配(發送幾封電子郵件,這些郵件也需要使用正確的URL進行測試)。

我記得之前看過一些關於它的東西,但是我不能再找到它了,所以希望這裏有人能指點我正確的方向。

回答

1

獲取頁面的完整URL

function request_url() { 
    $result = ''; 
    $default_port = 80; 

    if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']=='on')) { 
    $result .= 'https://'; 
    $default_port = 443; 
    } else { 
    $result .= 'http://'; 
    } 

    $result .= $_SERVER['SERVER_NAME']; 

    if ($_SERVER['SERVER_PORT'] != $default_port) { 
    $result .= ':'.$_SERVER['SERVER_PORT']; 
    } 

    $result .= $_SERVER['REQUEST_URI']; 
    return $result; 
} 

我認爲你將是足夠的:$_SERVER['SERVER_NAME']

+0

謝謝,使用$ _SERVER ['SERVER_NAME']拉服務器url,然後通過一個IF語句傳遞完全是我想做的,現在救了我很多關於什麼時候gitignore等等 – Railto

1

簡單的方法來做到這一點......

定義在constants.php環境常數文件

// constants.php 

define('ENVIRONMENT', 'development'); 
//define('ENVIRONMENT', 'production'); // uncomment this when your going to live your project 

general.php定義一般函數

// general.php 
include "constants.php"; 
function is_production() 
{ 
    if(ENVIRONMENT == "production") 
    { 
     return TRUE; 
    } 
    return FALSE; 
} 

function is_development() 
{ 
    if(ENVIRONMENT == "development") 
    { 
     return TRUE; 
    } 
    return FALSE; 
} 

現在你可以我們,在你的數據庫連接文件的功能,並選擇您的數據庫和基礎URL

// in db.php 
include "general.php"; 

if(is_production()) 
{ 
    $conn = mysql_connect("host1","username1","password1"); 
    mysql_select_db("db1",$conn); 
    define('BASE_URL', 'http://domain.com'); 
} 
else if(is_development()) 
{ 
    $conn = mysql_connect("host2","username2","password2"); 
    mysql_select_db("db1",$conn); 
    define('BASE_URL', 'http://testing.domain.com'); 
} 

現在你可以使用BASE_URL常數,你有數據庫連接,只要你想 這是一般的概述,但你可以在你的項目中執行,因爲你的standered .. :)

相關問題