connect.php で定義された文字列を使用しますが、接続文字列に IIS の web.config を使用する Silverilght 対応サービスがいくつかあります。
接続文字列を 2 か所に配置するのではなく、PHP から web.config の接続文字列にアクセスできますか? これにより、エンド ユーザーが変更しやすくなります。
connect.php で定義された文字列を使用しますが、接続文字列に IIS の web.config を使用する Silverilght 対応サービスがいくつかあります。
接続文字列を 2 か所に配置するのではなく、PHP から web.config の接続文字列にアクセスできますか? これにより、エンド ユーザーが変更しやすくなります。
非常に古いスレッドであることは知っていますが、最近、同様の問題が発生しました。必要な人のためにソリューションを共有するだけです。それは私の目的を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 を読み取ることを検討する必要がありますが、セキュリティ上の理由から賢明な決定ではありません。
ありがとう
はい、できます。
スニペット:
public function Load( $xmlfile )
{
if ( is_readable( $xmlfile ) ) {
$config = $this->xml2array( simplexml_load_file( $xmlfile ) );
}