How To: Consumir valores de Web.Config de IIS7 desde PHP

Utilizando el How To anterior (clic AQUÍ para consultarlo), aprovechemos para guardar información sensible o general para nuestro sitio web en el Web.Config que crea IIS7 para cada uno de los sitios web que generemos.

Nuestro Web.Config para este sitio web es:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <modules>
            <add name="PHPToken" type="PHPSite.PHPSiteModule" />
        </modules>
    </system.webServer>
</configuration>

Solo se encuentra disponible la sección de modulos donde se encuentra registrado el modulo HTTP que desarrollamos en .NET y que lo pusimos disponible para este sitio web. Podemos agregar secciones a este Web.Config como AppSettings y ConnectionStrings para almacenar valores sensibles y no disponibles para la consulta a través del URL.

Modifiquemos este mismo Web.Config quedando de la siguiente forma:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <appSettings>
  <add name="website_name" value="Sitio Web de Prueba" />
  <add name="website_domain" value="sitiowebdeprueba.com" />
 </appSettings>
 <connectionStrings>
  <add name="MyConnection" value="server=(local);database=MyDataBase;..." />
 </connectionStrings>
    <system.webServer>
        <modules>
            <add name="PHPToken" type="PHPSite.PHPSiteModule" />
        </modules>
    </system.webServer>
</configuration>

Una vez modificado, nos creamos un script en PHP para leer los valores disponibles tanto en AppSettings como en ConnectionStrings. El contenido del script sería el siguiente:

<?php
$xml = simplexml_load_file(“web.config”);
echo “<strong>Variables de AppSettings</strong>”;
$r = $xml->xpath(“//configuration/appSettings/add”);
for($i=0;$i<count($r);$i++)
{ echo “<div>Variable “.$r[$i][“name”].” = “”.$r[$i][“value”].””</div>”; }

echo “<br /><strong>Variables de ConnectionStrings</strong>”;
$r = $xml->xpath(“//configuration/connectionStrings/add”);
for($i=0;$i<count($r);$i++)
{ echo “<div>Variable “.$r[$i][“name”].” = “”.$r[$i][“value”].””</div>”; }
?>
[/pre]
De esta forma podemos almacenar información dentro del Web.Config que ya existe en nuestro sitio web y consultarla desde PHP sin ningun problema, evitandonos crear otros archivos para almacenar información de configuración de nuestras aplicaciones que pueda que no tengan un nivel de seguridad establecido o reconocido por el servidor web.

Abajo les dejo el link para descargar el codigo de este ejemplo actualizado.

http://cid-f04bcee769e32165.skydrive.live.com/self.aspx/How%20To/PHP%20Site%202.zip

Espero les sea de utilidad.

Saludos,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s