2012-10-26 34 views
1

我們使用connect.php中定義的字符串,但現在我們有一些啓用了silverilght的服務,它們使用IIS中的web.config作爲其連接字符串。IIS PHP使用來自web.config的連接字符串

因此,而不是在兩個地方有連接字符串,我可以從PHP訪問web.config中的一個?這也會使最終用戶更容易改變。

回答

1

是的,你可以。

  • 確保Web服務器進程有權訪問該文件。您可以放入一個可供網絡服務器進程訪問的鏈接。
  • web.config只是一個xml文件。您可以使用我提供的代碼片段作爲示例或基礎來讀取文件並根據需要進行調整。

段:

public function Load($xmlfile) 
{ 
    if (is_readable($xmlfile)) { 
    $config = $this->xml2array(simplexml_load_file($xmlfile)); 
} 
2

我知道這是一個非常古老的線程,但最近我遇到了類似的問題。我只是想分享我的解決方案,無論誰需要它。它完全達到了我的目的,希望它能幫助你。

在我的web.config連接字符串節點的樣子:

<connectionStrings> 
    <add name="sqlDB" connectionString="Server=xxx.xxx.xxx.xxx; Database=db_name; User Id=sqlserver_user_name; password=sqlserver_password;Max Pool Size=2000;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

我寫了下面的PHP代碼檢索SQL Server連接信息在PHP

<?php 
    // start get connection string from web.config 
    $xml = simplexml_load_file("../Web.config") or die("Error: Cannot create object"); 
    //in my case web.config is in previous directory 
    $array = json_decode(json_encode((array) $xml), 1); 

    $server = ""; 
    $database = ""; 
    $user = ""; 
    $password = ""; 

    $fullString = ($xml->connectionStrings->add[0]["connectionString"]); 

    $strArr = explode(";", $fullString); 

    $arrCount = count($strArr); 
    $connArr[]=""; 
    for($x=0;$x<$arrCount-1;$x++){ 
     $aS = explode("=",$strArr[$x]); 
     $connArr+=array(strtolower(trim($aS[0])) => trim($aS[1])); 
    } 
    $server = $connArr["server"]; 
    $database = $connArr["database"]; 
    $user = $connArr["user id"]; 
    $password = $connArr["password"]; 
    // end get connection string from web.config 

    $connectionInfo = array("UID"=>$user,        
          "PWD"=>$password,        
          "Database"=>$database, 
          "CharacterSet" => "UTF-8"); 

    /* Connect using SQL Server Authentication. */ 
    $conn = sqlsrv_connect($server, $connectionInfo); 
?> 

僅供參考使用:在我案例web.config和PHP文件在相同的域和相同的根目錄下。如果您在跨域環境中工作,則應首先考慮從遠程位置讀取web.config,但出於安全原因這不是一個明智的決定。

謝謝

+0

這工作出色 – Burgi

+0

很高興聽到布爾吉。 –

相關問題