0% encontró este documento útil (0 votos)
94 vistas33 páginas

Introducción al Código ASP y Funciones

Las marcas de código ASP se identifican con los tags <% y %>. Las variables en ASP no requieren declaración de tipo y se pueden declarar con la palabra Dim. Los objetos como Response, Request, Session y Application permiten interactuar con el servidor, usuario y archivos en ASP.

Cargado por

jhonny
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
94 vistas33 páginas

Introducción al Código ASP y Funciones

Las marcas de código ASP se identifican con los tags <% y %>. Las variables en ASP no requieren declaración de tipo y se pueden declarar con la palabra Dim. Los objetos como Response, Request, Session y Application permiten interactuar con el servidor, usuario y archivos en ASP.

Cargado por

jhonny
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

1.

Marcas de código ASP

Para identificar las marcas de código ASP se utilizan los tags <% (como marca de inicio del código) y %> (como
marca final del código).

Ejemplo de código ASP


<% Response.write ("hola") %>

2. Tratamiento de las Variables

Todas las variables de una páginas ASP son de tipo Variant por lo que no debe especificarse entre Integer, string u
otro tipo de objeto.

Su declaración es opcional aunque su práctica es una buena costumbre ya que evita errores y facilita la lectura del
código. En la declaración se utiliza la palabra reservada "Dim" pudiéndose anidar varias declaraciones mediante
el separador ",".

Para forzar a que se declaren todas las variables de una página debe introducirse el código "Option Explicit"

Ejemplo de creación y asignación de variables


<%

Option explicit
' declaración de 3 variables
Dim nombre, fecha_nacimiento, edad
'asignación de valores
nombre = "Alex Morales"
fecha_nacimiento = "12/03/69"
edad = 31

%>

<!—Aqui se iniciaria el html de nuevo


nombre=<% =nombre %> ò nombre <% response.write nombre %>
nombre=<% =nombre %> ò nombre <% response.write nombre %>

3. Los objetos y las funciones en las páginas ASP

Los objetos son programas compilados e instalados en el servidor y que han sido programados para realizar un
conjunto de operaciones fácilmente accesibles por otros programas y que reciben el nombre de Métodos.

Debido a que el resultado de procesar una página ASP es una página HTML, el objeto Response es probablemente
el más utilizado en las páginas ASP ya que permite la comunicación entre el servidor y el cliente.

Veamos ahora el método Write, mediante el cual enviaremos información al navegador. Entre esta información
podremos incluir el valor de las variables y tags html que condicionan el aspecto de la página.

1
Utilización del objeto Response : Sirve para sacar algo en pantalla
<%@ LANGUAGE="VBSCRIPT" %>
<HTML>
<BODY>
<%
Dim nombre
nombre = "Alex Morales"
' Imprime el nombre de la variable
' Concatenar strings utilizando VBSCRIPT
Response.Write("<h1>Mi nombre es: <b>" & nombre & "</b></h1>")
' Imprime la cadena de texto entre comillas.
' El mismo resultado que Response.Write utilizando el signo igual
(="Mi primera página ASP")
%>
</BODY>
</HTML>

Utilización del objeto Response-redirect: Sirve para redireccionar una pagina hacia otra:
Ojo!: Siempre debe utilizarse antes de los tags Html, ya que de otra forma dará error.

<%
Response.Redirect "pagina2.asp"
%>

Utilización del objeto Response.Cookie: Sirve para "plantar" una cookie en la PC del cliente:

<%
Response.Cookies("nombre") "Fabian"
Response.Cookies("edad") "18"
%>

En la cookie nombre se guardará la palabra Fabian, y en edad 18.

Utilización del objeto Objeto Request.form: Es el encargado de tomar los datos, ya sea de un formulario o de otro
tipo de variables

<form method="post" action="procesa.asp">


<input type="text" name="camponombre">
<input type="text" name="campoapellido">
<input type="submit" value="Enviar">
</form>

procesa.asp
<%
' Como vimos anteriormente, declaramos variables
Option Explicit
Dim nombre, apellido
' Recogemos los datos del formulario y los guardamos
nombre=Request.Form("camponombre")
apellido=Request.Form("campoapellido")
%>
<html>
<head></head>
<body>
Datos que ingresaste:<br>
Nombre: <%=nombre%> <br>
Apellido: <%=apellido%> <br>
</body>
</html>

2
Utilización del objeto Objeto Request.QueryString: Este método se utiliza para pasar valores de una página hacia
otra a través de un link:

Pasa_parametros.html:

<HTML>
<HEAD>
</HEAD>
<BODY>
<AHREF="lee_parametros.asp?nombre=jose">click aca! </A>
</BODY>
</HTML>

Lee_parametros.asp:
<%
Response.Write (Request.QueryString("nombre") & "<br>")
%>
Utilización del objeto Objeto Request.Cookies: Con este método podemos recoger los datos almacenados en una
cookie, a la cual cargamos con algunos datos con el objeto Reponse.

Formulario.html:
<html>
<body>
<form action=”poner_cookie.asp” method=”post”>
Introduzca su nombre:<input type=text name=nombre value=””><br>
<input type=”submit” name=”boton” value=”aceptar”>
</form>
</body>
</html>

Poner_cookie.asp.html (le plantamos la cookie):


<%
nombre=Request.form(“nombre”)
Response.cookie(“nombre”)=nombre
%>

En otro momento el usuario entrara a la pagina principal por ejemplo, pero eso si ya tendra la cookie en su
disco duro, con lo que podremos reconocerle asi:

Index.asp (vemos si tiene alguna cookie):


<%
nombre=Request.Cookies("nombre")
Response.Write "Hola, " &nombre& "."
%>

Utilización del objeto Objeto Session: Permite almacenar información necesaria para una sesión del usuario.
Las variables almacenadas con el objeto Session no se pierden al cambiar de página, sino que perduran hasta que
sean eliminadas por el servidor, o bien cuando se llame al método Abandon que cierra la sesión.

<%
session("nombre")="Fabian"
%>
De esta forma, almacenaremos dentro de la variable de sesión nombre la palabra Fabian.
También podemos, a partir de una variable de session, guardar la información en otra variable:

<%
nombre= session("nombre")
%>
Para destruir una variable session puede ocurrir dos cosas: 1º es que el usuario esté 20 minutos sin actividad
dentro del sitio, y la otra es llamar al método Abandon:
3
<% session.Abandon %>

Utilización del 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.

Lock (Asegura que solo un usuario pueda modificar el objeto Application a la vez).

<%
Application.Lock
%>

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
%>

Ejemplo:

<%
Application.Lock
Application("visitas") = Application("visitas")+1
Application.Unlock
%>

Eres el visitante numero<%=Application("visitas")%>

Utilización del objeto filesystemobject: Este objeto se utiliza para facilitar el acceso al sistema de archivos del
servidor.

El siguiente código muestra el uso del componente FSO, en el que destacan las operaciones:
 Instanciación del objeto de acceso a archivos
 Abrir el archivo deseado en el modo deseado (lectura, escritura)
 Manipular/visualizar el contenido del archivo
 Cerrar los objetos utilizados
 Lectura (1) Escritura (2)

<%
Const fsoLectura = 1
Dim objFSO
'Instanciación del objeto FSO

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")


'Abrir el archivo de texto

Dim objTextStream
Set objTextStream = objFSO.OpenTextFile("C:\ejemplo.txt", fsoLectura)
'Visualiza en el navegador el contendido del archivo de texto

Response.Write objTextStream.ReadAll
'Cerrar e inicializar los objetos

objTextStream.Close
Set objTextStream = Nothing

4
Set objFSO = Nothing %>

Antes de abrir el archivo es conveniente asegurarse de que existe, para ello puede utilizar la función FileExists
disponible en el juego de funciones del objeto FSO.

<%
If objFSO.FileExists("c:\ejemplo.txt") then
'El archivo existe --> instrucciones de lectura
else
'El archivo no existe --> Mensaje de error
end if
%>

Para leer el contenido del archivo de texto deberá utilizar uno de los siguientes métodos del objeto TextStream.

 Read(x): lee el número de caracteres especificado por "x"


 ReadLine: Lee una linea entera
 ReadAll: Lee todo el archivo

Para escribir en un archivo de texto deberá utilizar uno de los siguientes métodos del objeto TextStream.
 Write(cadena): escribe la cadena en el archivo de texto
 WriteLine(cadena): como Write pero añade un retorno o caracter "fin de linea"
 WriteBlankLines(x): escribe x líneas en blanco

<%
'Ejemplo de lectura

Response.Write "El contenido del archivo es:" & objTextStream.ReadAll


'Ejemplo de escritura

objTextStream.WriteLine "Linea añadida por la ejecución de una página ASP"


%>

Ejemplo de lectura

<%
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Dim objTextStream

const strNombreArchivo = "C:\pruebas\direcciones.txt"


const fsoLectura = 1

If objFSO.FileExists(strNombreArchivo) then
Set objTextStream = objFSO.OpenTextFile(strNombreArchivo, fsoLectura)
Response.Write "El contenido del archivo es:<br>"
Do while not objTextStream.EOF
Response.Write objTextStream.ReadLine
loop
objTextStream.Close
Set objTextStream = Nothing
Else
Response.Write strNombreArchivo & " No se ha encontrado"
End If
Set objFSO = Nothing
%>

5
Utilización del objeto cdonts: (Collaboration Data Objects for NT) es un componente que permite enviar
mensajes de correo electrónico desde las páginas ASP.
Como su nombre indica está disponible en servidores NT y en particular a partir de la versión 4.0. ya que para
versiones anteriores se utilizaba el componente SendMail
Entre algunas de sus características más importantes está la posibilidad de enviar mensajes en formato de texto o
bien HTML. Para utilizar CDO se requiere que esté instalado y operativo un servicio SMTP (Simple Mail
Transfer Protocol) ya sea en la propio servidor o en otro servidor de la red local. SMTP es instalado por defecto
con IIS 4.0 y puede aceder a sus propiedades desde la cónsola de administración de IIS.

Set mailobj = Server.CreateObject("CDONTS.NewMail")


mailobj.mailFormat = 0
mailobj.bodyFormat = 0
mailobj.from = "[email protected]"
mailobj.to = "[email protected]"
mailobj.subject = "saludos"
mailobj.body = "Hola, este es un mensaje enviado desde una página ASP"
mailobj.send
myCDO.Send "[email protected]", "[email protected]","Saludos",_
"Hola, este es un mensaje enviado desde una página ASP"

Instrucciones necesarias en la creación y envio de mensajes


Creación del objeto
Formato del mensaje (texto o HTML)
Propiedades del correo
Acción de enviar el mensaje (deben haberse inicializado las anteriores variables)
Acción de enviar el mensaje
Otras propiedades
Entre otras propiedades interesantes que pueden tener los mensajes enviados con CDONTS destaca el
parámetro importancia, ficheros adjuntos, o codificación MIME del mensaje.
En el caso de adjuntar ficheros (atachment), éstos deben estar localizados en unidades accesibles por el
servidor y no por el cliente o navegador).

Ejemplo
Página de construcción del mensaje
<FORM ACTION="enviar.asp" METHOD="POST">
<TABLE>
<TR>
<TD ALIGN="RIGHT">Para:</TD>
<TD><INPUT TYPE="TEXT" SIZE="30" NAME="destinatario"></TD>
</TR>
<TR>
<TD ALIGN="RIGHT">De:</TD>
<TD><INPUT TYPE="TEXT" SIZE="30" NAME="remitente"></TD>
</TR>
<TR>
<TD ALIGN="RIGHT" NOWRAP>Asunto:</TD>
<TD ALIGN="LEFT"><INPUT TYPE="TEXT" SIZE="67" NAME="asunto"></TD>
</TR>
</TABLE>
<TABLE>
<TR><TD VALIGN="TOP" ALIGN="RIGHT" NOWRAP>Texto del mensaje:</TD>
6
<TD ALIGN="LEFT" NOWRAP>
<TEXTAREA WRAP="OFF" ROWS="7" COLS="50" NAME="cuerpo"></TEXTAREA></TD>
</TR>
</TABLE>
<INPUT TYPE="RESET" NAME="Cancelar" VALUE="Borrar"> &nbsp;
<INPUT TYPE="SUBMIT" NAME="Enviar" VALUE="Enviar">
</FORM>

Página de construcción del mensaje (enviar.asp)

<%
Set mailobj = Server.CreateObject("CDONTS.NewMail")
mailobj.mailFormat = 0
mailobj.bodyFormat = 0
mailobj.from = request.form("remitente")
mailobj.to = request.form("destinatario")
mailobj.subject = request.form("asunto")
mailobj.body = request.form("cuerpo")
mailobj.send
%>

Otras utilidades del objeto CDONTS


Si bien el uso más extendido del objeto CDONTS es el envio de correo, también puede utilizarse para visualizar
en páginas ASP los mensajes recibidos por el servidor de correo SMTP de nuestro servidor NT.
El siguiente código muestra como leer los mensajes de la carpeta "Bandeja de entrada" de la cuenta del usuario
"Administrador".

Lectura de mensajes recibidos


<%
'Identificación
Set Correo = server.createobject("CDONTS.Session")
Correo.logonSMTP "administrador" , _
[email protected]"

'Acceder a la bandeja de entrada


Set Bandeja = Correo.inbox

'Crear un objeto que almacene los mensajes de la bandeja anterior


Set Mensajes = Bandeja.messages

'Recuperación de los mensajes


For k = 0 to Mensajes.count
Set elMensaje = Mensajes.item(k)
'Obtener el nombre del remitente
Response.write "Desde: " & elMensaje.sender & "<br>
'Obtener el asunto del mensaje
Response.write "Asunto: " & elMensaje.subject & "<br>"
'Obtener el texto del mensaje
Response.write elMensaje.text & "<br>"
Next

'logoff
Correo.logoff
Set Correo = nothing
%>

7
Objetos para acceder a bases de datos:
Pueden utilizarse dos sistemas de conexión a Base de Datos:
 Mediante DSN
 Sin DSN

DSN
Este sistema consiste en definir un identificador de la conexión mediante el driver ODBC accesible desde el Panel
de Control. Posteriormente, desde las páginas ASP, se practica el acceso mediante un string de conexión que incluye
el identificador antes mencionado.
Para crear un DSN en Windows, haz clic en el botón Inicio selecciona la opción Panel de Control del menú
Configuración. En la ventana del Panel de Control selecciona Fuentes de Datos ODBC y accede a la pestaña DSN
de Sistema. Selecciona la base de datos que quieres añadir y define un nombre a la conexión y la localización física
de la base de datos.

Sin DSN
Este sistema requiere almacenar directamente el archivo de la BD (habitualmente de Access) en un directorio
del servidor. De este modo, en la conexión se utilizará un String un poco más complejo ya que deben
identificarse tanto el driver como el directorio físico completo de la base de datos.

Estos son los 3 pasos para realizar la conexión:


 Crear el objeto conexión a la BBDD mediante Server.CreateObject("ADODB.Connection")
 Definir la conexión (con/sin DNS), mediante la instrucción objConn.ConnectionString
 Abrir la conexión mediante la instrucción: objConn.Open

Instrucciones de conexión a una base de datos


<%
Dim objConn
'Creación del objeto que realiza la conexión a la base de datos
Set objConn = Server.CreateObject("ADODB.Connection")

'Dar al obj la info correspondiente a la cnx ODBC a utilizar Mediante DNS


objConn.ConnectionString = "DSN=bdProgramacion"

'Sin DNS
objConn.ConnectionString = "DBQ=C:\mis documentos\program.mdb;DRIVER={MS
Access (*.mdb)}"

'Abrir la conexión
objConn.Open
%>
Acceso a los datos:
A continuación, practicará las instrucciones para que desde la página ASP pueda acceder a la información de la base
de datos y mostrarla en la ventana del navegador del usuario, para realizar esta operación utilizaremos el objeto
ADODB.Recordset.
Instrucciones de acceso a los datos
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DSN=gestion"

'Inicialización del objeto Recordset


Set objRS = Server.CreateObject("ADODB.Recordset")

' Construcción de la consulta mediante SQL


strSQL = "SELECT nombre, precio FROM productos WHERE precio < 30"

' ejecución de la consulta


objRS.Open strSQL, objConn %>
8
Visualización de datos
<table><tr><td>NOMBRE</td><td>PRECIO</td></tr>
<%
'Bucle hasta encontrar EOF (final del cursor)
Do Until objRS.EOF = True
Response.Write "<tr>"
'objRS("nombre") y objRS("precio") contienen los valores
Response.Write "<td>Nombre= " & objRS("nombre") & "</td>"
Response.Write "<td>Precio = " & objRS("precio") & "</td>"
Response.Write "</td></tr>"
'Mover el cursor al siguiente registro.
objRS.MoveNext
Loop
%></table>
Cerrar conexiones
Es una práctica recomendable cerrar y borrar los objetos recordset y de conexión creados en la página ASP. Para
ello se utiliza el código indicado a continuación:

Cerrar conexión
<%
'Cerrar el objeto Recordset
objRS.Close
'Eliminar el objeto Recordset
Set objRS = Nothing
'Cerrar el objeto de la conexión
objConn.Close
'Eliminar el objeto de la conexión
Set objConn = Nothing
%>

9
10
11
Recordemos que actualmente un Recordset consiste en un array bidimesional de objetos campo. En el modelo ADO,
estos objetos campo son los que contienen los datos, por tanto cada objeto campo tiene un tipo, un tamaño y un
valor. Es importante estudiar, antes de hacer una base de datos que tipos de campos vamos a necesitar debido a que
este apartado esta muy ligado al resultado del diseño de una Base de Datos.

ADOVBS.INC
ADOVBS.INC es un archivo que se incluye con el servidor Internet Information Server y en el que se definen
todas aquellas constantes utilizadas con objetos del ADO.
La inclusión de archivos es muy aconsejable para realizar código legible y rehutilizable dos características
imprescindibles en páginas de acceso a datos. Para ello se utiliza la instrucción include virtual que pertenece al juego
de instrucciones del protocolo HTTP y cuya sintaxis es la siguiente:

<%
<!-- #include virtual="/adovbs.inc" -->
%>
Contenido del archivo Global.asa:
Evento: Inicio de Aplicación Evento: Fin de Aplicación
Evento: Inicio de Sesión
Evento Fin de Sesión Session.
<script Language="VBScript" RUNAT=Server>
Sub Application_OnEnd()
End Sub
Sub Application_OnStart()
Application("NumSesion") = 0
Application("NumVisitas") = 0
End Sub
Sub Session_OnEnd() Global.asa
Application("NumSesion") = Application("NumSesion") - 1
End Sub
Sub Session_OnStart()
Application("NumSesion") = Application("NumSesion") + 1
Application("NumVisitas") = Application("NumVisitas") + 1
End Sub
</script>

Página Inicio.asp
<%
Response.write "Eres el visitante número: & Application("NumSesion")
& " de " & Application("NumVisitas")
%>

12
Objeto w3upload
Usando el componente w3upload (tech.dimac.net) construiremos una solución para permitir a sus visitantes realizar
upload de sus archivos sin necesidad de utilizar FTP, ni escribir extensos códigos en ASP.
El componente W3 Upload, nos permite controlar que tipos de archivos pueden subirse, de que tamaño, en que
carpeta guardarlos y opciones más avanzadas como guardar archivos en bases de datos.
Desarrollaremos un ejemplo con dos páginas, un formulario para seleccionar el archivo, formulario.htm y una
página asp que realizará el proceso de upload, upload.asp

Creamos un formulario con los siguientes campos:


 Carpeta: Es la carpeta de trabajo del usuario, donde se guardaran los archivos
 Mensaje: además de enviar el archivo, el usuario podrá enviar un mensaje que guardaremos en un
archivo de texto.
 Archivo: desde aquí el usuario seleccionará el archivo a enviar.

Formulario.htm
<form method="POST" action="upload.asp" enctype="multipart/form-data">
Carpeta : <input type="text" name="carpeta" size="20"><p>
Mensaje : <textarea rows="3" name="mensaje" cols="34"></textarea><p>
Archivo : <input type="file" name="archivo"><p>
<input type="submit" value="Enviar" name="Btnsubmit">
</form>

Por un lado, hay que indicar el tipo de codificación del formulario como "multipart/form_data", lo que habilitará
el envío de un archivo. En segundo lugar, aparece un campo de formulario de tipo "file", el cual mostrará un cuadro
de texto y un botón "examinar".

Upload.asp
En el server deberemos tener una carpeta con los permisos correspondientes. Por ejemplo c:\uploads. Dentro de esa
carpeta, los usuarios podrán crear sus subcarpetas de trabajo. El archivo adjunto y el mensaje enviado por el usuario
se guardaran allí. Comenzaremos creando una instancia del objeto:
<%
Set upload = Server.CreateObject("W3.Upload")
%>
De ahora en adelante, cuando hagamos referencia a los campos de formulario, lo haremos con el objeto upload y no
con response. Esto es muy importante ya que de lo contrario perderemos el archivo enviado.
Verificaremos si existe la carpeta de trabajo, y de no ser así la crearemos. Para esto utilizaremos el objeto
FileSystemObject.
<%
Set fsys = CreateObject("Scripting.FileSystemObject")
%>
"Limpiamos" la cadena ingresada por el usuario:
<%
carpeta=upload.form("carpeta")
carpeta=replace(carpeta,"."," ")
carpeta=replace(carpeta,">"," ")
carpeta=replace(carpeta,"<"," ")
carpeta=replace(carpeta,"/"," ")
carpeta=replace(carpeta,"\"," ")
carpeta=replace(carpeta,":"," ")
carpeta=replace(carpeta,"?"," ")
carpeta=replace(carpeta,"*"," ")
carpeta=replace(carpeta,chr(34)," ")
carpeta=replace(carpeta,"'"," ")
carpeta=trim(carpeta)
%>

13
Con FolderExists comprobamos si existe una carpeta; para crear una nueva usamos CreateFolder
<%
if not fsys.FolderExists("c:\uploads\" & carpeta) then
fs.CreateFolder "c:\uploads\" & carpeta
End if
%>
Ya tenemos la carpeta de trabajo, ahora guardaremos en un archivo de texto el mensaje ingresado por el usuario.
El nombre del archivo será del tipo: mensaje_151100_031108pm.txt (esto es mensaje_fecha_hora)

Guardar el archivo
<%
strmensaje=trim(upload.form("mensaje"))

if strmensaje<>"" then

fecha=replace(date,"/","")
hora=replace(time,":","")
hora=replace(hora,".","")
hora=replace(hora," ","")

archivotexto = "c:\uploads\" & carpeta & "\mensaje_" & fecha & "_"
archivotexto = archivotexto & hora & ".txt"

set a = fsys.CreateTextFile(archivotexto,true)

a.writeline(strmensaje)
a.close
set a=nothing

end if
%>

Ya no necesitamos el objeto fsys:


<%
set fsys = nothing
%>
Bueno, al fin empezamos a trabajar con nuestro objeto upload. En primer lugar, vamos a filtrar archivos que no
queremos que los usuarios envíen. En este ejemplo, no se pueden enviar archivos de mas de 4 mb. ni aquellos con
extensión "exe" o "vbs".
Aplicación de filtros

<%
Set elarchivo = upload.Form("archivo")
if elarchivo.size>4194000 then 'tamaño en bytes
response.write "El archivo es demasiado grande para ser enviado.<p>"
response.write "<a href='javascript:history.back()'>Regresar</a>"
exit sub
end if
if instr(elarchivo.filename,".")<>0 then
extension=mid(elarchivo.filename,instr(elarchivo.filename,"."))
if trim(extension)=".exe" or trim(extension)=".vbs" then
response.write "Imposible enviar ese tipo de archivo.<p>"
response.write "<a href='javascript:history.back()'>Regresar</a>"
exit sub
end if
end if
%>

14
Solo nos resta guardar el archivo en la carpeta de trabajo con el método SaveToFile
<%
if elarchivo.IsFile then
strsave="c:\produccion\" & carpeta & "\" & elarchivo.filename
elarchivo.SaveToFile(strsave)
end if

response.write "Se envio el archivo : " & elarchivo.filename


response.write "<br>Tamaño : " & elarchivo.size
%>

Mejorando el proceso
Hay varias cosas que Ud. puede hacer para mejorar la solución que construimos:
 Combinar upload con el W3 JMail para construir una completa solución de correo con attachments.
 Habilitar el envío de múltiples archivos (recorriendo la colección form)
 evitar que los archivos se sobreescriban. cuando el cliente envía un archivo con un nombre ya
existente. Solo debe cambiar el método SaveToFile por SaveAsUniqueFile. Así, por ejemplo, se
guardará un archivo como file(1).txt si ya existe file.txt.

Server Variables
Las variables de Servidor (ServerVariables) almacenan información relativa al entorno de ejecución de una
aplicación ASP.
La sintaxis para acceder a estas variables es mediante el objeto Request indicando entre paréntesis el nombre de la
variable a obtener.
Una de las aplicaciones más utilizadas de estas variables es la obtención del identificador de usuario. Esta
información se conoce como el nombre de usuario que se introduce al hacer login en un equipo de un entorno de
red local.
Esta sería la sintaxis:
<%
Response.write Request.ServerVariables("LOGON USER")
%>

Descripciones de algunas variables de servidor


A continuación se describe el significado de las diferentes variables de servidor:

AUTH_TYPE: Indica el método de autentificación que utiliza el servidor para validar a un usuario

CONTENT_TYPE: Tipos de dato del contenido

LOGON_USER: Cuenta de Windows NT con la que se ha loginado el usuario

QUERY_STRING: Cadena que sigue al signo interrogante (?) en la petición HTTP

REMOTE_ADDR: Dirección IP del equipo remoto que realiza la petición al servidor

REMOTE_HOST: Nombre del Host que realiza la petición

REQUEST_METHOD: Método utilizado en la petición (GET, HEAD, POST)

SCRIPT_MAP: Prefijo de la URL anterior a la pagina

SERVER_NAME: Nombre o IP del servidor

15
Ejemplo
El siguiente ejemplo utiliza un bucle para recorrer el objeto ServerVariables visualizando el nombre y el contenido
de todas ellas en una tabla de dos columnas
Visualización Server Variables

<TABLE>
<TR>
<TD><B>Server Variable</B></TD>
<TD><B>Value</B></TD>
</TR>
<% For Each name In Request.ServerVariables %>
<TR>
<TD> <%= name %> </TD>
<TD> <%= Request.ServerVariables(name) %> </TD>
</TR>
<% Next %>
</TABLE>

4. Funciones Importantes
Utilización de funciones de Fecha:

• Date: devuelve la fecha actual.


• Day: devuelve el número de día.
• Month: devuelve el número de mes.
• Year: devuelve el año.

Utilización de funciones de Hora:

• Now: devuelve la fecha y hora actual


• Time: devuelve la hora actual
• Hour: devuelve la hora
• Minute: devuelve los minutos
• Second: devuelve los segundos

Ejemplo:
<%
' Declaramos variables
Option Explicit
Dim fecha, anio, mes, dia
' Guardamos la fecha actual dentro de fecha
fecha=Date()
' A partir de fecha, sacamos el dia, mes y año
anio=year(fecha)
mes=month(fecha)
dia=day(fecha)
%>
Dia: <%=dia%> <br>
Mes: <%=mes%> <br>
Año: <%=anio%> <br>

Resultado:
Dia: 8
Mes: 3
16
Año: 2002

17
FUNCION ABS

La función abs devuelve el valor absoluto de un numero pasado como argumento. Si este numero es 0 o no
existe, la funcion devuelve 0.

Ejemplo:
<%

numero=-123
valor_absoluto=abs(numero)
%>

El valor absoluto del numero es <%=valor_absoluto%>

FUNCION ARRAY

Devuelve un array con una serie de valores pasados como parámetros.

Ejemplo:
<%
nombre1=”Diego”
nombre2=”Mariana”
nombre3=”Oscar”
nombre4=”Toloba”
nombre5=”josema”
Lista_nombres=array(nombre1,nombre2,nombre3,nombre4,nombre5)
%>
Ojo! Recordar que los arrays aqi se empiezan direccionando con el 0

FUNCION ASC

Devuelve un valor entero que representa al carácter que pasas a la función como argumento.
Ojo!! Si se le ponen varios caracteres solo devuelve el primero.

<% response.write ASC("A") %>


Resultado = 65.

FUNCION CHR

Devuelve un string que respresenta al numero que le pasas como argumento.

<% response.write Chr(97) %>


Resultado = a.

FUNCION CINT

Convierte una expresion numerica en un entero.

<% response.write CInt(-97.54)%>


Resultado = -98.

18
Ojo!! Hay una limitacion en cuanto al rango del numero pasado como argumento. Dicho número no puede
ser menor de –32.768 ni mayor de 32.767. Si ese numero esta fuera de este rango, dara un problema de
Overflow. Para eso usar INT

19
FUNCION CREATE

Crea y devuelve una referencia a ActiveX automation object. A esta funcion como argumento le pasaremos
una clase definida.

<% SetServer.CreateObject(ADODB.connection) %>

FUNCION CSTR

Devuelve una expresión que ha sido convertida en una cadena.

<% response.write CStr(-97.54) %>


Resultado = -97.54 (pero como una cadena)

FUNCION DATE ADD

Devuelve una fecha a la que que ha sido añadida un intervalo de tiempo.

<% response.write DateAdd("h", 3, Now) %>


Resultado = La fecha de hoy con 3 horas mas, en esta función puedes usar a parte de la “h” todas estas…

Interval Description Interval Description


yyyy Year q Quarter
m Month y Day of year
d Day w Weekday
ww Week h Hour
n Minute s Second

FUNCION DATE DIFF

Devuelve la diferencia entre dos fechas u horas.


<%
fecha_final=1/1/2005
texto=”dias para el dia” & fecha_final
response.write "Faltan " & DateDiff("d", Date, #fecha_final#) & " texto."
%>
Resultado = Faltan (dias que sean) dias para el dia 1/1/2005. Usa la misma tabla que el anterior

FUNCION DATE

Devuelve un entero que contiene una parte especifica de una fecha/hora dadas.

<% response.write "Minuto actual: " & DatePart("n", Now) %>


Resultado = Minuto actual= (numero de minuto, usa la misma tabla que el anterior).

FUNCION DATE

Devuelve una fecha para un año, mes y día especifico.


<% response.write DateSerial(Year(now) + 3, Month(Now), Day(Now)) %>
Resultado = 3/8/2005
Ojo!! El primer argumento debe ser una año valido entre 100 y 9999, el mes debe ser entre 1 y 12 , el dia
entre 1 y 31.
20
FUNCION DATE

Devuelve una fecha.


<% response.write DateValue("October 12, 1971") %>
Resultado = 10/12/1971

FUNCION

Devuelve la parte entera de un número.


<% response.write Fix(-97.54) %>
Resultado = -97

FUNCION

Devuelve la posicion numérica de la primera aparición de un carácter.


<% response.write Instr("tartaja", "a") %>
Resultado = 2

FUNCION FORMAT CURRENCY

Devuelve una expresión formateada como valor de moneda.

<% response.write FormatCurrency("843.43294") %>


Resultado = $843

FUNCION FORMAT PERCENT

Devuelve una expresión como valor tanto por ciento.

<% response.write FormatPercent(0.45324567, 3) %>


Resultado = 45.325%

FUNCION

Devuelve la ultima posicion numérica de un string en una cadena .

<% response.write InStrRev("tartaja", "a") %>


Resultado = 7

FUNCION

Devuelve la parte entera de un numero.

<% response.write Int(47,8787) %>


Resultado = 47

FUNCION IS ARRAY

Devuelve true o false si el argumento es un array o no.


<% tabla=array(“elemento1”, “elemento2”, “elemento3”) response.write
isarray(tabla)%>
Resultado = true
21
FUNCION IS

Devuelve true o false si una expresion tiene un valor o no.

<% response.write IsEmpty("a") %>


Resultado = false

FUNCION IS

Devuelve true o false si una expresion tiene un valor o no.

<% response.write IsNull("a")%>


Resultado = false

FUNCION IS NUMERIC

Devuelve true o false si una expresion es numerica o no.

<% response.write Isnumeric("a") %>


Resultado = false

FUNCION IS OBJECT

Devuelve true o false si una expresion es un objeto o no.

<%
set objeto= server.create.object(“adodb.connection”)
response.write isobject(objeto)
%>
Resultado = true

FUNCION

Devuelve un string creado, uniendo los elementos de varios arrays o de uno con una cadena.

<%
tabla_nombres = Array("Diego", "Oscar", "Josema")
response.write Join(tabla_nombres, "-")
%>
Resultado = Diego-Oscar-Josema
Ojo solo se pueden usar arrays de una dimensión!!!

FUNCION

Devuelve el valor del indice base de las dimensiones de cualquier array.


<%
tabla_nombres = Array("Diego", "Oscar", "Josema")
response.write lbound(tabla_nombres)
%>
Resultado = 0

22
FUNCION

Devuelve una cadena que ha convertido en minúsculas.


<%
nombre = “JOSEMA”
response.write lcase(nombre)
%>
Resultado = josema

FUNCION LEFT

Devuelve el número de caracteres desde la izquierda a contando con un parámetro numérico.


<% response.write left(“JOSEMA”,1) %>
Resultado = J

FUNCION LEN

Devuelve el número de bytes que ocupa una cadena o la longitud de una cadena.
<% response.write len(“JOSEMA”) %>
Resultado = 6

FUNCION LTRIM

Devuelve una cadena sin los espacios.


<% response.write ltrim(“José María”)%>
Resultado = JoséMaría

FUNCION MID

Devuelve un número de caracteres a partir de un string.


<% response.write mid(“José María”, 1, 4) %>
Resultado = José
FUNCION

Devuelve un string, en el que un sbstring especifico ha sido reemplazado por otro substring un numero
determinado de veces.

<% response.write Replace("Este es josema.", "josema", "jose") %>


Resultado = Este es Josema.

FUNCION RGB

Devuelve un número representando un valor RGB de color.

<% response.write RGB(255, 10, 0) %>


Resultado = 2815.
Ojo!! Maximo 255 por argumento, minimo 0.

FUNCION RIGHT

Devuelve un numero específico de caracteres desde la parte derecha de un string.

23
<%response.write Right("josema", 4)%>
Resultado = sema.

24
FUNCION

Devuelve un numero aleatorio.

<%
randomize
response.write Rnd
%>
Resultado = un numero aleatorio.

FUNCION

Redondea con un número específico de decimales.

<% response.write Round(443.323632, 3) %>


Resultado = 443.324.

FUNCION RTRIM

Quita los espacios a la derecha.

<% response.write RTrim(" prueba ") %>


Resultado = “ prueba”.

FUNCION SPLIT

Crea un array a partir de un separador.

<% array = Split("hola, adios, buenas, malas", ",") %>


Resultado = un array en el que cada elemento es el que va entre “,”.

FUNCION SQR

COMPLETAR!!!!.
<% response.write Sqr(16) %>
Resultado = 4.

FUNCION STRCOMP

Devuelve un entero como resultado de una comparación de cadenas.

<% response.write strComp("josema", "josema") %>


Resultado = 0;
Si la cadena 1 es mayor que la cadena2 da –1
Si la cadena 1 es igual que la cadena 2 da 0
Si la cadena 1 es menor que la cadena 2 da 1
Si uno de los 2 strings es nulo el resultado es NULL

FUNCION

Repite un caracter un número de veces.

<% response.write string(5,"j") %>


25
Resultado = jjjjj

26
FUNCION ST

Devuelve un string dado la vuelta .

<% response.write strreverse(“josema”) %>


Resultado = amesoj

FUNCION TIME

Devuelve el tiempo para una hora especifica, minuto y segundo .

<% response.write TimeSerial(18, 35, 27) %>


Resultado = 6:35:27 PM

FUNCION TIME VALUE

Devuelve un valor de tiempo tipo time.

<% response.write TimeValue("8:12:56 PM") %>


Resultado = 8:12:56 PM

FUNCION TYPE NAME

Devuelve el tipo de objeto, variable, etc...

<%
i = 123.45
response.write TypeName(i) & "<br>"
k = "hola"
response.write TypeName(k) & "<br>"
Set con = Server.CreateObject("ADODB.Connection")
response.write TypeName(con)
%>
Resultado = Double
String
Connection
FUNCION

Devuelve el numero mayor de elemento de un array.

<%
i = Array("lunes","martes","miercoles")
response.write UBound(i)
%>
Resultado = 2

FUNCION UCASE

Devuelve un string que ha sido convertido a mayúsculas.

<% response.write UCASE("Hola") %>


Resultado = HOLA
27
FUNCION VARTYPE

Devuelve el subtipo de una variable.

<%
i = 243.432
response.write varType(i)
%>
Resultado = 5
Ojo, es muy facil.

FUNCION

Devuelve un numero entero que representa el dia de la semana.

<% response.write WeekDay(Date) %>


Resultado = 6

FUNCION WEEKOFDAYNAME

Devuelve el nombre del día.

<%response.write WeekDayName(WeekDay(Date))%>
Resultado = nombre del dia en el que ejecutes este script

5. DEFINICION DE FUNCIONES Y SUBRUTINAS

Para facilitar la lectura del código en las páginas ASP, obtener rehusabilidad y en definitiva estructurar la aplicación,
ASP permite crear funciones y subrutinas (las primeras se distinguen de las segundas porque retornan un valor).
Si conoces Visual Basic observarás que el sistema es idéntico en las páginas ASP.

Ejemplo de Subrutina
<%
' Declaración de la subrutina Sumar
sub Sumar(valorA, valorB, res)
res = valorA + valorB
end sub
%>

<% Dim result


'Llamada a la subrutina Sumar
Call Sumar 30, 40, c
Response.write "El resultado de: 30 + 40 es " & c
%>
Ejemplo de una Función

<%
' Declaración de la Función Sumar
function Sumar(valorA, valorB)
Sumar = valorA + valorB
end function
%>
<%
Dim result
'Llamada a la Función Sumar
Response.write "El resultado de: 30 + 40 es " & Sumar (30,40)

28
%>

6. INTRODUCCION A LA PROG ORIENTADA A OBJETOS

COM (http://www.microsoft.com/com/) es el standard for the interface to


objects. Por definicion, los objetos COM tienen solo métodos y propiedades.

No existen demasiadas diferencias entre propiedades y metodos desde el punto de vista del
programador. Los metodos pueden tomar argumentos, las propiedades no.

Propiedades
Las propiedades no toman ningun tipo de argumento, y a menudo son usadas para describir el
estado de un objeto. Todas las propiedades devuelven un valor, sin embargo algunas son de solo
lectura, y otras son de lectura/escritura. Aqui tenemos un ejemplo de sintaxis, con VBScript, para
leer una propiedad.
value = object.property

Para asignar un valor a una propiedad de un objeto:

object.property = value

Metodos
Los metodos pueden devolver valores y tomar argumentos. Se usan para iniciar un evento dentro
de un objeto, para inicializar valores o establecerlos (en este ultimo caso se deben pasar los
argumentos a inicializar o establecer)
Si un metodo devuelve un valor pero no toma ningun argumento la sintaxis será
value = object.method()

Los metodos que no devuelven valores no llevarán paréntesis. Un ejemplo de esto es el metodo
close, del objeto conexion:

Conn.Close

Argumentos
Los métodos pueden tomar uno o mas argumentos o no tomar.

Colecciones
Las colecciones son objetos que representan un conjunto de objetos. Todas las colecciones tienen
metodos predefinidos y propiedades. Todo objeto coleccion tiene un metodo item, una propiedad
count y un metodo _NewEnum.
Una coleccion puede tambien crear objetos del tipo coleccion. En otras palabras si un obeto
particular puede agruparse en un conjunto, ese objeto tendra un objeto coleccion que podra crear
una instancia de un objeto dentro del conjunto.

29
ASP Hosting
Once you’re ready with your pages, you’ll need a server to host your site.
Since Active Server Pages may be hosted only on Windows NT servers
(though the scene is fast changing with the advent of Chili!ASP,) ASP hosting
is usually costlier than regular hosting. (Maintaining NT costs more than
Linux-Apache)
But, of course, there are freebies – here is a pick of some of the free ASP
hosts around. They insert their ads on your pages, and that’s how they earn.
DomainDLX
http://www.domaindlx.com/
DomainDeluxe offer the following features to their members:
Microsoft Windows 2000
Internet Information Server 5.0
15 MB of Space
Additional 25 MB Free Server Disk Space Upgrade!
Unlimited Bandwidth
Unlimited 24/7 Account Access via FTP
6MB Free Web Based E-mail
Free Statistical Counter
Free Intranet
SSI (DHTML)
Active Server Pages Support (ASP 3.0)
AspEmail Component
Free Database Connectivity: MS Access databases
Brinkster
http://www.brinkster.com/
They offer two hosting plans, General & Premium.
General
Cost: FREE!
30 MBs of Web Space
ASP Support
ACTIVE SERVER PAGES 3.0
76
MS Access DB Support
Web Based File Manager
ADO & FileSystemObject
No Ads On Your Site
Premium Plan
$10.95/Setup $10.95/Month
All FREE Features PLUS
FTP To Upload Files
Your Own Domain Name
1 POP3 Email Address
2000 MB/Month Data Transfer
15+ 3rd Party Components
SoftCom Technologies
http://www.softcomca.com/
SoftCom offers four plans: Standard, Premium, Gold, and Platinum. The
Standard plan is an excellent start for those hosting a site for the first time. It

30
gives you all of the features you need to get your site up and running.
With one mailing list, 50 MB of disk storage, and 20 e-mail accounts you
have all the features to get your business on-line.
The Standard plan
For the monthly fee of $9.95 you will receive:
Free domain name registration / transfer
Microsoft® FrontPage® 2000 Extensions
50 MB disk space
Microsoft® Active Server Pages
20 e-mail accounts
Microsoft® Visual InterDev Support
Unlimited web traffic
Your own cgi-bin
Unlimited FTP updates and traffic
Audio/Video streaming
Unlimited e-mail forwarding
Account management console
1 mailing list
Monthly billing cycle with no minimum contract
Web site statistics
Access to raw web site log files
E-mail autoresponders
Redundant Internet connections
Dedicated IP address
Daily tape backups
Free scripts
UPS protection
ACTIVE SERVER PAGES 3.0
77
After you begin to build your web presence, you can consider purchasing
advanced services to enhance the functionality of your site. Compare the
standard hosting plan with other plans.
The Premium plan - improve your Web presence.
For $14.95 per month you will receive all the same features of the standard
plan plus an additional mailing list, an ODBC connection for a Microsoft
Access database, a secure web site connection using SoftCom's key, (SSL), 25
MB more storage space and 5 more e-mail accounts.
The Gold plan - as you expand so can your service.
2 mailing lists, 2 ODBC connections to Microsoft Access database, a secure
website connection (SSL), directory password protection (for membership
based services), an additional FTP user with upload capability, twice the
amount of storage space and 10 more e-mail accounts.
The Platinum plan - increase your storage space as your business
grows.
For $44.95 per month you will receive all the features of the standard plan
plus 3 mailing lists, 3 ODBC connections to a Microsoft Access database, a
secure web site (SSL) connection, directory password protection (for
membership based services), two additional FTP users with upload capability,
100 MB more of storage space and 20 more e-mail accounts.
Feature plus services
31
As you begin to build your online presence you can purchase advanced
services to enhance the functionality of your site, as well as gaining more
control of how you conduct business online.
COM Components for use with ASP
AspEmail
http://www.aspemail.com/
AspEmail 4.4 is a free active server component that enables your ASP
application to send email messages via any external SMTP server. The
component supports multiple file attachments, multiple recipients, Cc's,
Bcc’s, and Reply-To.
In addition to basic functionality available for free, AspEmail 4.4 offers a
number of premium features that require a registration key after a 30-day
evaluation period. These features are support for message queuing, embedded
images, Quoted-Printable format and authentication. Regular file attachments
are still free, of course.
ACTIVE SERVER PAGES 3.0
JMail
http://tech.dimac.net/
JMail is another email component, much more powerful than AspEmail and
offers a whole lot of functions including POP3 support, MailMerge with a
simple template, PGP signing, etc.
Nonetheless, JMail is fairly complex to use, and exceeds the needs of most
ASP sites. Highly recommended for large sites, not so useful for small ones.
AspEmail will suffice just the same!
AspUpload
http://www.aspupload.com/
AspUpload is an Active Server component which enables an ASP application
to accept, save and manipulate files uploaded with a browser. The files are
uploaded via an HTML POST form with one or more <INPUT TYPE=FILE>
tags. The <FORM> tag must contain the attribute
ENCTYPE="multipart/form-data".
Its rich set of features include
Uploads to memory.
Directory uploads.
Image size extraction functionality.
Compatibility with IIS 3, IIS 4, IIS 5 (Window 2000), and PWS.
Ability to upload multiple files at once.
Ability to change file attributes.
Ability to save files in the database as blobs.
Ability to export files from the database.
Automatic generation of unique file names to prevent collisions with
existing files.
Ability to put a limit on the size of files being uploaded.
Encryption support.
Directory Listing with sorting.
File copying, moving and deletion.
Directory creation and deletion.
Again, this is not something everybody will need. Evaluate your budget &
requirements before going in for any component.
32
33

También podría gustarte