2

connect.php で定義された文字列を使用しますが、接続文字列に IIS の web.config を使用する Silverilght 対応サービスがいくつかあります。

接続文字列を 2 か所に配置するのではなく、PHP から web.config の接続文字列にアクセスできますか? これにより、エンド ユーザーが変更しやすくなります。

4

2 に答える 2

2

非常に古いスレッドであることは知っていますが、最近、同様の問題が発生しました。必要な人のためにソリューションを共有するだけです。それは私の目的を100%果たしました。あなたにも役立つことを願っています。

私の 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 サーバー接続情報を取得し、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 を読み取ることを検討する必要がありますが、セキュリティ上の理由から賢明な決定ではありません。

ありがとう

于 2016-12-28T22:00:17.900 に答える
1

はい、できます。

  • Webサーバープロセスがファイルにアクセスできることを確認してください。Webサーバープロセスにアクセスできるリンクを挿入できます。
  • web.configは単なるxmlファイルです。例またはベースとして提供したスニペットを使用して、ファイルを読み取り、必要に応じて調整できます。

スニペット:

public function Load( $xmlfile )
{
  if ( is_readable( $xmlfile ) ) {
    $config = $this->xml2array( simplexml_load_file( $xmlfile ) );
} 
于 2012-10-26T08:19:13.290 に答える