Professional Documents
Culture Documents
En este capítulo veremos los conceptos básicos que le harán falta para comenzar a
programar páginas ASP
• Al concluir este capítulo usted deberá saber programar una simple página en ASP
En Html se utiliza <tag> para abrir, y </tag> para cerrar, mientras que en ASP
se utiliza <% y %>, de la siguiente forma:
<% LANGUAJE="VBScript"%>
Un comentario dentro del código ASP se señala con una ' (comilla simple)
antes del comentario, también se suele cambiar la ' por la palabra rem. De esta
forma, toda la línea que contenga un comentario, el interprete de asp del
servidor no lo leerá ni lo ejecutará
Los comentarios son muy útiles cuando tenemos cientos o miles de líneas de
código y luego queremos hacer alguna modificación, poniendo diferentes
comentarios pueden ayudarnos mucho.
Una página ASP por dentro
El aspecto interno de una página ASP es el siguiente:
<%
Por ejemplo:
<html>
<body>
<%
%>
</body>
</html>
Declaración de variables
En una página ASP no hay que señalar de que tipo de variable se trata, todas
son del tipo Variant.
<%
Option Explicit
apellido = "Calvo"
email = "i72cafef@uco.es"
%>
<html>
<head></head>
<body>
<br>
Nombre: <%=nombre%>
<br>
Apellido: <%=apellido%>
<br>
Email: <%=email%>
<br>
</body>
</html>
Instrucciones SQL
A través de estas instrucciones, podemos determinar que tipo de operación vamos a
realizar sobre la tabla de la base de datos, pudiendo ser seleccionar (select), borrar
(delete), agregar (insert), entre otros. Para ejecutarla hay que crear primero el objeto del
RecordSet, y tras la instrucción SQL escribir:
set rs=oConn.Execute(SQL) .
• Al concluir este capítulo usted deberá conocer las sentencias del lenguaje de
manipulación de bases de datos SQL.
Sentencia Select
Recupera registros de una tabla.
Sintaxis:
Ejemplos:
· Select:
Sentencia Delete
Elimina un registro de una tabla.
Sentencia Insert
Agrega registros a una tabla
Sentencia Update
Actualiza los registros de una tabla
Ejemplo:
Modifica los registros que contengan como nombre Fran por Juan.
<%
set con=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;
Data Source="&Server.MapPath("basededatos.mdb")&";"
rs=con.Execute(SQL)
%>
• Al concluir este capítulo usted deberá saber manejar aquellos objetos integrados más
populares de ASP.
El objeto Response es uno de los mas utilizados en las paginas ASP, ya que dispone de
la comunicación entre el cliente y el servidor. Se utiliza para controlar la información
que se envía al usuario. Esto incluye el envío de información directamente al
explorador, la redirección del explorador a otra dirección URL o el establecimiento de
valores de las cookies.
• Sintaxis general:
Response.metodo [valor]
Entre los métodos mas interesantes del objeto Response estan los siguientes:
Método Write
El método Write escribe una cadena de resultado en el navegador cliente
(Nota: cuando se usa la sintaxis <%=variable%> estamos usando
implícitamente el método Response.Write).
Ejemplo:
<% response.write "<center>Hola mundo</center>" %>
Método Redirect
El método Redirect hace que el explorador se conecte con una dirección URL
diferente.
Ejemplo:
Método Cookie
Sirve para almacenar una cookie en el ordenador del cliente:
Ejemplo:
Objeto Request
El Objeto Request recupera los valores que el cliente pasa al servidor durante una
petición HTTP.
Dependiendo de la forma en que enviemos los datos al servidor tendremos que utilizar
una u otra de las diversas colecciones del objeto Request. Las mas típicas son:
Sintaxis General:
Request.coleccion(elemento)
Método Form
Supongamos que enviamos la información desde el siguiente formulario:
</form>
Método QueryString
Supongamos que enviamos la información en forma de cadena de consulta
(una cadena de consulta HTTP está especificada por las parejas de valores que
siguen al signo "?"):
<a href="recibir.asp?nombre=Julian&nacionalidad=francesa">
Método Cookies
Un ejemplo para utilizarlo, es crear un formulario que pida un nombre, y luego
guardar ese valor en una cookie, para que cuando nos vuelta a visitar lo
reconozcamos y lo saludemos:
Objeto Server
El objeto Server nos proporciona acceso a métodos y propiedades del servidor.
Método ScriptTimeout
Especifica la cantidad maxima de tiempo que puede tardar la ejecución de una
secuencia de comandos (tiempo maximo que puede tardar en ejecutarse una
página dada).
Sintaxis:
Server.ScriptTimeout= nº de segundos
Ejemplo:
Método CreateObject
Crea una instancia de un componente ActiveX en el servidor.
Sintaxis:
Server.CreateObject (IdProg)
Ejemplo:
Objeto Session
El objeto Session permite almacenar la información necesaria para una sesión de
usuario contra nuestra aplicación ASP. Las variables que almacenemos en el objeto
Session no se pierden al cambiar de página, si no que se mantienen hasta que el cliente
sea eliminado por el servidor. Las variables de Session de un cliente solo pueden ser
accedidas por ese cliente. El servidor crea automáticamente el objeto Session cuando un
usuario que no tenga actualmente una sesión solicita una pagina Web de la aplicación.
Nota: el servidor elimina un cliente bien cuando desde una pagina ASP se invoca el
método Abandon (session.abandon) o bien cuando este cliente lleva 20 minutos sin
actividad en nuestra aplicación.
• Al concluir este capítulo usted deberá saber cómo crear variables y matrices para una
sesión de usuario.
Sesion("Nomvariable") = valor
Ejemplo:
Ejemplo:
<%Dim cestacompra(2)
cestacompra(0) = 1
cestacompra(1) = 8
cestacompra(2) = 22
Session("Cesta") =cestacompra%>
Objeto Application
Este objeto se utiliza para compartir información entre todos los usuarios de una
aplicación. Como varios usuarios pueden compartir este objeto, se utilizan los métodos
Lock y Unlock para no permitir que dos o mas usuarios puedan al mismo tiempo
modificar la propiedad.
• Al concluir este capítulo usted deberá haber saber cómo compartir la información
entre los usuarios
Método Lock
Asegura que solo un usuario pueda modificar el objeto Application a la vez.
<% Application.Lock%>
Método Unlock
Desbloquea al objeto previamente bloqueado, para poder ser modificado por
otro usuario después de haberlo bloqueado mediante el método Lock. Si no se
desbloquea el objeto Application, el servidor lo hace automáticamente cuando
la página .asp termina o transcurre el tiempo de espera.
<% Application.UnLock%>
<% Application.Lock
Application("visitas") = Application("visitas")+1
Application.Unlock %>
Ver solución
El archivo "GLOBAL.ASA"
El archivo Global.asa es un fichero de texto situado en el directorio raiz de nuestro
servidor Web, es decir, en el directorio de comienzo de nuestras páginas. Es un archivo
de comandos que nos permite la automatización de los cuatro eventos básicos de
nuestro servidor.
• Al concluir este capítulo usted deberá haber comprendido como realizar tareas de
forma automatizada.
Estructura
La estructura es siempre la misma:
Sub Application_OnStart
........
End Sub
Sub Application_OnEnd
........
End Sub
Sub Session_OnStart
........
End Sub
Sub Session_OnEnd
........
End Sub
</SCRIPT>
Eventos
Application_OnStart
El evento Application_OnStart se ejecuta antes de que se cree la primera nueva
sesión; es decir justo cuando el primer cliente pide una pagina de nuestro
servidor.
Application_OnEnd
El evento Application_OnEnd se ejecuta cuando la aplicación termina.
Session_OnStart
El evento Session_OnStart se ejecuta cuando el servidor crea una nueva sesión;
esta secuencia de comandos es ejecutada antes de enviar la página solicitada al
cliente...
Session_OnEnd
El evento Session_OnEnd se ejecuta cuando se abandona o se supera el tiempo
de espera de una sesión.
Ejemplo de un archivo "GLOBAL.ASA"
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
dim mitabla()
redim mitabla(9)
application("tabla")=mitabla
End Sub
Sub Application_OnEnd
End Sub
Sub Session_OnStart
paginaInicio="/ appl/index.html"
response.redirect paginaInicio
End Sub
Sub Session_OnEnd
End Sub
</SCRIPT>.
Componente ADRotator
Los componentes ActiveX se han diseñado para que se ejecuten en el servidor Web
como parte de las aplicaciones Web, proporcionan funcionalidad a las aplicaciones,
como el acceso a ficheros, Bases de datos, etcétera.
Existen componentes ActiveX para tareas muy diversas, en esta páginas mostraremos
como operar con algunos de los que se incluyen por defecto en la instalación de ASP.
Web. Cada vez que un cliente abre o recarga la página este componente presenta una
nueva imagen según las definiciones especificadas en un archivo.
Propiedades:
Método GetAdvertisement
Sintaxis:
Ejemplo:
REDIRECT /util/redirect.asp
WIDTH 300
HEIGHT 50
BORDER 2
/imagenes/logo1.gif
http://www.transcontinental.com
/imagenes/logo5.jpg
http://www.pastelito.fr
Dulces de calidad
30
<html>
<head><title>Uso de AdRotator</title></head>
<body><h2>Uso de AdRotator</h2>
</ body>
</html>
Componente FileSystemObject
El componente FSO nos permite abrir y crear ficheros de texto en el servidor. Este
componente consta de 22 métodos, de los cuales podemos seleccionar 2 que son los que
nos van a permitir leer o escribir en archivos de texto existentes en el servidor o crear
dichos archivos.
Para crear un objeto FSO, la sintaxis es la misma que para cualquier otro componente
ActiveX:
Cuando abrimos o creamos un fichero de texto mediante FSO este nos devuelve una
instancia del objeto TextStream que es la que representa el archivo físico y con la cual
trabajaremos.
• Al concluir este capítulo usted deberá saber crear y abrir ficheros de texto en el
servidor
Método CreateTextFile
CreateTextFile: Crea un archivo físico y devuelve la instancia de TextStream
con la cual trabajaremos.
• Sintaxis
Método OpenTextFile
OpenTextFile: Abre un archivo físico y devuelve la instancia de TextStream
con la cual trabajaremos.
Sintaxis:
Modo Indica si queremos abrir el fichero para lectura (1) , para escritura (2) o
para
TRUE se crea.
Ejemplo:
Componente TextStream
Al concluir este capítulo deberá conocer que el objeto TextStream nos sirve para
manejar ficheros de texto en el servidor. La creación de este objeto se realiza a partir de
un objeto FileSystemObject y gracias a alguno de sus métodos.
Una vez creado, disponemos de un objeto TextStream que representa un archivo físico
abierto, ya sea para lectura o escritura. Este objeto dispone de 9 métodos:
Sintaxis:
<% MiFichero.close%>
Sintaxis:
Sintaxis:
Sintaxis:
<% MiFichero.ReadLine%>
Sintaxis
<% MiFichero.Skip(numero de caracteres) %>
Sintaxis
Sintaxis
Sintaxis
Sintaxis
<HTML>
<BODY>
<%
Set Mfso=Server.CreateObject("Scripting.FileSystemObject")
Set MArchivo=Mfso.OpenTextFile("c:\fecha.txt",2,true)
MArchivo.write date()
MArchivo.close
%>
</BODY>
</HTML>
• Una conexión con bases de datos. Esta conexión puede realizarse de dos
formas.
• Directamente, (tal y como se explica en el manual Paginas ASP).
• Utilizando una DSN solicitándola al servidor que te provee de servicios
de internet, (en este caso uso esta opción).
1. Autor
2. Email del Autor
3. Fecha de alta en el foro
4. Titulo de la cuestión
5. Cuerpo de la cuestión
6. ID de la pregunta, (uso interno)
7. QoR. Pregunta o Respuesta
- P: Una pregunta.
- X: El único registro de la tabla con este valor en el campo QoR. El valor del
campo IDPregunta de este registro es el que mantiene el contador de dicho campo.
Almacena el valor de IDPregunta del última consulta entrada en el foro.
El campo IDPregunta.
Todas las respuestas que se lancen a ese comentario irán identificadas por ese
mismo valor en sus respectivos campos IDPregunta.
Nombres especiales.
Todos estos datos son importantes para el funcionamiento del foro. La DSN os la
proporciona el servidor que os provee de servicios de internet, (si no es así usad el
metodo de acceso directo que se comenta en el código). La base de datos y la tabla
es la que creeis vosotros, (por ejemplo en ms.Access). Las claves de acceso son las
que vosotros qu
<%
ConexionBD.Open "DSN=MiDNS"
%>
QueryString
QueryString recupera los valores de los parámetros entrados al llamar al ASP desde
la URL.
comando=request.querystring("comando")
passw=request.querystring("passw")
ID=request.querystring("ID")
QoR=request.querystring("qor")
IDPregunta=request.querystring("IDPregunta")
fecha=request.querystring("fecha")
Titulo=request.querystring("Titulo")
Cuerpo=request.querystring("Cuerpo")
Autor=request.querystring("Autor")
<html>
<head>
<title>El Foro</title></head>
<body>
<H2>Opciones</H2>
<UL>
<LI><A HRef="qor.asp?comando=anadir">
Lanzar un nuevo comentario al foro.
</A></LI> <LI>
<A HRef="qor.asp?comando=ver">
Ver Todo, (refrescar).
</A></LI></UL>
<%
If comando="anadir" Then
%>
<INPUT Type="hidden" Name="fecha" Value="<%= Year(Date) & "/" & Month(Date) & "/" &
Day(Date) %>">
<%
RS.MoveFirst
%>
Autor :<BR>
<UL>
<UL>
</UL>
Titulo, (obligado) :
<UL>
</UL>
<UL>
</UL>
</FORM>
<%
Error=False
MsjError=""
If Autor="" Then
Autor="-no firma-"
End If
If email="" Then
email=" "
End If
If Titulo="" Then
Error=True
End If
If Cuerpo="" Then
Error=True
End If
If QoR="P" Then
Set RS = ConexionBD.Execute("UPDATE MiTabla SET IDPregunta = " & IDPregunta & " WHERE
QoR='X'")
End If
Response.Write("<UL>")
Response.Write("</UL>")
%>
<BR><BR>
<CENTER>
<TR>
<TH BGColor='#03A7CF' Align='Left'>
<%
If Comando="explosion" Then
Set RS = ConexionBD.Execute("SELECT * FROM MiTabla WHERE IDPregunta=" & IDPregunta & "
ORDER BY IDPregunta DESC, QoR, Fecha DESC")
Else
End If
%>
</TH>
</TR>
<%
%><tr>
<td><%
If RS("QoR")="R" Then
Response.Write("<UL>")
End If
' Fecha.
If IsNull(RS("Fecha")) Then
Else
End If
' ID.
' Título.
If IsNull(RS("Titulo")) Then
Response.Write(" <BR>")
Else
If Comando="explosion" Then
Else
End If
End If
If Comando="explosion" Then
Response.Write("<B>Autor : </B>")
If IsNull(RS("Autor")) Then
Else
Response.Write((RS("Autor"))
End If
If IsNull(RS("email")) Then
Response.Write(" <BR>")
Else
Response.Write(" (<A HRef='mailto:" & RS("email") & "?subject=Foro Acervo Visual'>" &
RS("email") & "</A>)<BR>")
End If
'Botón de respuesta.
If RS("QoR")="P" Then
%>
Tit = RS("Titulo")
%>
</FORM>
<%
End If
End If
If RS("QoR")="R" Then
Response.Write("</UL>")
End If
%>
</td>
</tr><%
RS.MoveNext
Loop
%>
</TABLE>
</CENTER>
</UL>
<%
%>
<INPUT Type="hidden" Name="fecha" Value="<%= Year(Fecha) & "/" & Month(Fecha) & "/" &
Day(Fecha) %>" Size=0>
<UL>
<%
%>
</UL>
Autor :<BR>
<UL>
</UL>
<UL>
</UL>
Titulo, (obligado) :
<UL>
<%
%>
</UL>
</UL>
</FORM>
<%
%>
Password :
ID de pregunta a eliminar :
</FORM>
<%
Set RS = ConexionBD.Execute("DELETE * FROM MiTabla WHERE IDPregunta = " & IDPregunta & "
AND QoR<>'X'")
Response.Write("<H2>Ok.</H2>")
Response.Write(<H2>Password erroneo.</H2>)
End If
End If
%>
</body>
</html>
• Al concluir este capítulo usted sabrá manejarse con toda soltura con ASP y será capaz
de resolver cualquier problemas que se le presente en ASP.
Este componente nos permite mediante unas pocas líneas de ASP, enviar y
recibir mail. Manos a la obra:
<html>
<head>
</head>
<body>
<form method="post" action="mail.asp">
<p>Nombre:
<input type="text" name="nom">
</p>
<p>Empresa:
<input type="text" name="emp">
</p>
<p>Sugerencias:
<textarea name="sug" cols="35"></textarea>
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
<input type="reset" name="Submit2" value="Limpiar">
</p>
</form>
</body>
</html>
<%
'Creación de variables para almacenar los campos del formulario
Nombre= Request.Form("nom")
Empresa= Request.Form("emp")
Sugerencias= Request.Form("sug")
strBody = "<html><body>"
strBody = strBody & "Este es un mensaje generado por el formulario:" &
"<br><br>"
strBody = strBody & "Nombre: "& Nombre &"<br>"
strBody = strBody & "Empresa: "& Empresa &"<br>"
strBody = strBody & "Sugerencias: "& Sugerencias &"<br>"
strBody = strBody & "</body></html>"
objCDOMail.Body = strBody
objCDOMail.Send 'Envía el mail
Set objCDOMail = Nothing
Response.redirect "gracias.html"
' O bien podemos ahorrar una página y escribir algo como
' Response.write "Gracias por enviarnos sus sugerencias"
%>
Application_OnStart
Application_OnEnd
Session_OnStart
Session_OnEnd
Sub Application_OnEnd
End Sub
Sub Session_OnStart
Session.Timeout = 20
Session("Start") = Now
Application.lock
Application("visitas") = Application("visitas") + 1
intTotal_visitas = Application("visitas")
Application.unlock
Session("VisitorID") = intTotal_visitas
Application.lock
Application("Active") = Application("Active") + 1
Application.unlock
End Sub
Sub Session_OnEnd
Application.lock
Application("Active") = Application("Active") - 1
Application.unlock
End Sub
</SCRIPT>
<html>
<head>
<title>Mostrando la cantidad de usuarios activos</title>
</head>
<body>
Vos sos uno, de <%=Application("Active")%> visitantes en este
momento.
</body>
</html>
Implementando un sistema de Banners Rotativos
Uno de los componentes más útiles que se pueden emplear en ASP es el
llamado Ad Rotator, este componente permite mostrar distintos banners en
una página ASP, pudiendo calcular mediante porcentajes, la cantidad de veces
que queremos mostrar los banners e incluso controlar las veces en que el
usuario hace click en alguno de los banners.
banners.asp
<HTML>
<HEAD><TITLE> Mostrando Banners</TITLE></HEAD>
<BODY>
<CENTER><H1>Mostrando Distintos Banners!</H1></CENTER>
<HR>
<%
Set MyAd=Server.CreateObject("MSWC.AdRotator")
MyAd.TargetFrame= "TARGET=""blank"""
%>
banners.txt
REDIRECT adredir.asp
WIDTH 468
HEIGHT 60
BORDER 0
*
banner1.gif
http://www.lavariable.com
El Portal de Programación en Internet
60
banner2.gif
http://www.webklan.com.ar
WebKlan
20
banner3.gif
http://www.neolatina.com
Neolatina
20
adredir.asp
<%
Response.AppendToLog Request.QueryString("url")
Response.Redirect Request.QueryString("url")
%>
Alojamiento ASP
En la actualidad están apareciendo muchos servidores que dan servicio gratuito de
hosting con soporte de ASP y bases de datos Access, con la única condición de que
aparezcan sus banners o ventanas con publicidad.
· http://www.webexperto.com/directorio/default.asp?catid=43&cattitle=Web+Hosting
Aquí encontrarán un listado de servicios gratuitos de hosting con y sin soporte de ASP.