Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Include. Incluir archivos ASP


Para incluir archivos en ASP se han de utilizar los include. Los vamos a revisar en este capítulo y también vamos a mostrar limitaciones de esta técnica y a mostrar alguna posible solución.


01/1/70 - Incluir archivos en una página consiste en insertar un trozo de código que tenemos alojado en un archivo aparte dentro del código de la página ASP que estamos programando. De este modo, podemos guardar en un archivo códigos de las páginas que utilizamos habitualmente, como podría ser la cabecera de nuestras páginas o el marco con el que se presetan todas las páginas del sitio, e incluso scripts en ASP que se dediquen a realizar algunas acciones muy repetidas, como conexiones con bases de datos. Trabajar realizando includes es muy práctico, pues no escribimos dos veces el mismo código y además, si tenemos que cambiarlo en algún momento sólo tendríamos que cambiar el código de ese archivo aparte y todas las páginas se modificarán automáticamente.

Para incluir archivos en ASP se han de utilizar los típicos include que ya hemos visto en capítulos anteriores pero que vamos a revisar en este capítulo. También vamos a mostrar limitaciones de esta técnica y a mostrar alguna posible solución.

Incluir archivos

Se utiliza con el enunciado de include, que puede tener dos formas:

<!--#include virtual="/plantilla.asp"-->
<!--#include file="plantilla.asp"-->

Las diferencias entre realizar el include "virtual" en lugar de "file" consisten en que la primera tiene en cuenta la raiz de tu dominio y con la segunda se tiene en cuenta el lugar donde está el documento desde el que estamos incluyendo el archivo. En un principio puede ser más útil trabajar con el modo "virtual" pues si movemos de directorio las páginas de nuestro sitio los includes seguirían funcionando. Si vemos varios ejemplos podremos entenderlo mejor.

<!--#include virtual="/plantillas/cabecera.asp"-->
Incluimos un archivo llamado cabecera que está en el directorio plantillas, que está a su vez en la raiz del dominio. Con este método el include funcionará independientemente de donde esté el archivo que lo incluye.

<!--#include file="plantillas/cabecera.asp"-->
Esto solo funcionará si el archivo que realiza el include está en la raiz del dominio. Pero fallaría si estamos en el cualquier subdirectorio del dominio.

<!--#include file="../plantillas/cabecera.asp"-->
Así conseguiríamos que funcionase si el archivo desde el que incluimos la cabecera está en un subdirectorio inmediatamente después de la raiz del dominio.

Include y la seguridad

En principio podemos utilizar cualquier extensión en el archivo vamos a incluir. Extensiones corrientes son .txt, .inc, .html o .asp. Sin embargo, es recomendable por motivos de seguridad que los nombremos como .asp, sobretodo si hemos insertado código ASP dentro del archivo a incluir.

El motivo por el que es más seguro nombrar los includes con extensión .asp es que si un usuario intenta acceder al archivo que se incluye directamente tecleando su URL en la barra de direcciones del navegador, algo así como http://www.dominio.com/archivos_a_incluir/funciones_comunes.inc, recibiría como respuesta el código completo y sin ejecutar del include y, probablemente, no nos interese que vean ese código de nuestro sitio web. Es especialmente delicado este problema cuando dentro del código colocamos información crítica como puede ser la cadena de conexión a la base de datos.

Con la extensión .asp nos aseguramos que, en caso de que un usuario consiga acceder a los includes, estos se ejecutarán en el servidor y se eliminarán todos los códigos ASP que no deseamos distribuir.

Modo de funcionamiento y problemática

El modo de funcionar de este tipo de includes consiste en que primero se insertan los archivos en la página, creando un conjunto que sería formado por el archivo fuente y todos los includes insertados dentro de él. Una vez creado ese gran fichero se ejecutan los scripts ASP.

Podría haber un problema si queremos incluir un archivo cuyo nombre debemos extraer de una variable ASP. Imaginaros que tenemos que incluir un archivo que tenemos su nombre en una variable. Así:

<%
archivoInclude = "miarchivo.html"
%>
<!--#include virtual=archivoInclude-->

Como el código ASP no se ejecuta hasta después de haber incluido el archivo, a la hora de incluirlo no se ha resuelto el nombre que se desea incluir. Dicho de otro modo, ASP no sabe qué es lo que vale la variable archivoInclude cuando va a incluirlo, por lo que no realiza el include tal como desearíamos.

Para parametrizar bien una página web y que su actualización sea fácil más tarde o más temprano lo anterior será un inconveniente. Así que podemos arreglar el problema del siguiente modo, creando una función que realice el include del archivo. Veamos cómo sería esa función:

<%
function incluye(archivo)
   archivo= request.serverVariables("APPL_PHYSICAL_PATH") & archivo
   set confile = createObject("scripting.filesystemobject")
   set fich = confile.openTextFile(archivo)
   while not fich.atEndOfStream
      lineactual = fich.readLine
      response.write(lineactual)
   wend
end function
%>


Varias cosillas habría que comentar sobre esta función. Recibe el nombre del archivo que deseamos abrir. Para construir la ruta completa de este archivo tendremos que utilizar el objeto request para extraer la variable del servidor que contiene la ruta de disco duro donde se encuentra el domino. Una vez que hemos construido el nombre de archivo con su ruta creamos el archivo en las 2 siguientes líneas. Finalmente hacemos un bucle que va extrayendo del archivo el texto correspondiente e imprimiendolo en la página.

Solo destacamos un punto en contra de esta forma de incluir los archivos. Se trata de que no podremos incluir más que código HTML, nunca código ASP pues no se ejecutaría y quedaría impreso en la página junto con el código HTML. Es una limitación significativa pero en los casos en los que solo necesitemos incluir texto puede servir muy bien.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 2 categorias relacionadas
+ 4 comentarios (Añadir)
+ 20 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Taller de ASP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en ASP
+ Entrar en Manuales de ASP


 Comentarios de los visitantes
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
Se muestran 4 comentarios revisados

 Comentario de veronica
15/9/03 
tras leer el articulo he intentado incluir un archivo que esta fuera del servidor bajo el que trabajo.

Si el archivo se encuentra dentro de la web no hay ningun tipo de problemas pero si esta fuera, no lo encuentra.
Si pudieseis, me gustaria que me explicarais si esta es la forma correcta de incluir una pag asp dentro de otra(que este en otro dominio), y si no es asi, ne pusierais en la pista de como hacerlo. (preferiria no usar frames para ello)

 Comentario de Roger Codina
20/5/04 
Tras encontrarme con el mismo problema, de que ASP no permite el paso de variables sobre include, al contrario que PHP, estuve pensando un rato y encontré un método para resolverlo, que evita el uso de la función mencioanda arriba, y que además permite la ínclusión de archivos con contenido dinámico, el método es el siguiente:

  • Crear una variable de session en elglobal.asa llamada, por ejemplo, session("seccion")="home"
  • Suponiendo que nuestra página base es index.asp y que es donde queremos que se incluyan los archivos, los links a nuestros apartados tendrán la siguiente forma:
index.asp?seccion=musica

El archivo que se incluirá en index.asp será el siguiente:

<!--#include file=contenido.asp-->

Ahora llenamos el archivo contenido.asp con el siguiente codigo fuente:

INICIO DEL CODIGO
<body>
<% session("seccion") = request.querystring("seccion")
if session("seccion") = "musica" then %><!--#include file=musica.asp-->
<% else %>
<!--#include file=inicio.asp-->
<% end if %>
</body>
FIN DEL CODIGO

Explicación: La variable de session almacena al iniciar la session el valor "home", una vez hacemos click sobre un vinculo que llame a index.php? con alguna variable, este incluirá contenido.asp, que asignará a la variable de session el valor de la variable de la URL y cargará solo el contenido que este dentro de la condicion... en este caso, un include al archivo en cuestión que contiene la información.

PD: Claro está que para más vínculos podemos usar un select case en vez de un if... eso a gusto del consumidor. :D

Al principio parece un poco liado, pero espero que sea de gran utilidad para aquellos que se hayan encontrado en mi misma situación.


 Comentario de rafa espada
27/4/05 
Es un tontería, pero como queda faltal... en el segundo párrafo de "Modo de funcionamiento y problemática ", HAVER es con B alta.

Estáis haciendo una labor estupenda... muchas gracias por todo...

CORREGIDO
Muchas gracias por darte cuenta, ya esta solucionado.

 Comentario de Jaime
02/2/07 
Yo me he encontrado con el mismo problema, tengo una web formada por una tabla y la cabecera, enu y todo eso esta metido con includes. Al final he conseguido que la parte central de la Web sea otra pagina cuya url se saca de una base de datos.

Al ver que no lo podía hacer de esta manera
<!--#include file=inicio.asp?IDPagina=<%Rs("ID")%>-->, por ejemplo, pues introduzco la pagina central con codigo ASP:
pagina = "Inicio?IDPagina=" & rs("ID")
Server.Execute(pagina)

Hasta el momento no he tenido problema ninguno, las querystring se toman bien tanto en las paginas metidas con includes como las metidas de esta manera. De esta forma todo se me ejecuta en una sola pagina (Index.asp), asi que si quiero cambiar el diseño en un rato tengo una web nueva.

Un saludo y espero que os sirva. Haceis un gran trabajo.

Añadir un comentario al artículo Añadir un comentario del artículo
 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 20 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Taller de ASP
Categorías
+Scripts en ASP
+Manuales de ASP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia