38
Aplicaciones ASP Alexis Quelopana

Asp

  • Upload
    adezhiz

  • View
    708

  • Download
    4

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Asp

Aplicaciones ASP

Alexis Quelopana

Page 2: Asp

Definición ASP

• Es una tecnología de lenguajes de programación desarrollada por Microsoft para páginas web creadas dinámicamente cuyas siglas significan Active Server Pages, páginas de Servidor Activo en castellano. Son unos archivos que cuentan con programas (o scripts) que se ejecutan en un servidor Microsoft Internet Information Server antes de que se desplieguen en la pantalla del usuario.

Page 3: Asp

• Esta tecnología facilita la programación de sitios web mediante varios objetos integrados, como por ejemplo un objeto de sesión basada en cookies, que mantiene las variables mientras se pasa de página a página. La extensión de estos archivos es .asp

Page 4: Asp

Objeto Session

• El objeto Session se utiliza en ASP para abrir una sesion, que tiene por defecto un tiempo de 20 minutos. Durante esta sesión un usuario , por ejemplo, puede estar logueado en un sitio y permanecer hasta que pase el tiempo de la sesión. Y si no estubo activo durante X minutos, deberá loguearse nuevamente.

Page 5: Asp

• Pero este no es su unico uso. Por supuesto que se lo puede utilizar para muchas cosas. Yo en mi sitio, lo uso para que un usuario no pueda votar en la encuesta mas de 1 vez por hora. ¿Cómo hago esto? Simple. Cuando detecto que un usuario realiza la votación, creo uns sesión que dura 1 hora, y siempre que intente votar dentro de ese lapso de tiempo, se lo impediré chequeando la variable de sesión.

Page 6: Asp

• Si esta en valor True significa que no han trancurrido aún los 60 minutos.Espero no haberlos maredo. Igual recueden que cualquier duda, me la pueden enviar por mail o llenando un formulario en la sección Contactanos.

Page 7: Asp

• Bueno, veamos un pequeño ejemplo para ver su sintaxis y funcionamiento.

Page 8: Asp

Acá esta el código en acción: (hacer refresh para ver el cambio)

• Para cerrarle una sesión al usuario se utiliza el metodo Abandon. La sitáxis es: <% Session.Abandon %>Con esto se finaliza la sesión aunque quede tiempo restante.Para asignar el tiempo de duración de una sesion usamos esa linea: <% Session.TimeOut = 8 %> Es obvio que el tiempo para cerrar la sesion en nuestro ejemplo es de 8 minutos.

Page 9: Asp

Objeto Application en ASP

• El objeto Application se utiliza para compartir información entre todos los usuarios de una aplicación (entendemos por una aplicación ASP todos los archivos .asp de un directorio virtual y sus subdirectorios.

Page 10: Asp

• Como varios usuarios pueden compartir un objeto Application, existen los métodos Lock y Unlock para asegurar la integridad del mismo (varios usuarios no puedan modificar una misma propiedad al mismo tiempo).

Page 11: Asp

• Lock: El método Lock asegura que sólo un cliente puede modificar o tener acceso a las variables de Application al mismo tiempo.

Sintaxis Application.Lock

Page 12: Asp

• Unlock: El método Unlock desbloquea el objeto Application para que pueda ser modificado por otro cliente después de haberse bloqueado mediante el método Lock. Si no se llama a este método de forma explícita, el servidor Web desbloquea el objeto Application cuando el archivo .asp termina o transcurre su tiempo de espera. Sintaxis

Application. Unlock

Page 13: Asp

• Ejemplo: • <% Application.Lock

Application("visitas") = Application("visitas")+1 Application.Unlock %> Eres el visitante numero <%= Application("visitas") %>

Page 14: Asp

• En el ejemplo anterior el método Lock impide que más de un cliente tenga acceso a la variable Visitas al mismo tiempo. Si la aplicación no se hubiera bloqueado, dos clientes podrían intentar incrementar simultáneamente el valor de la variable Visitas. El método Unlock libera el objeto bloqueado de forma que el próximo cliente puede incrementar la variable.

Page 15: Asp

• Nota Importante:• En el objeto Application pueden

almacenarse matrices, pero estas son almacenadas como un objeto, es decir, no podemos almacenar o recuperar un solo elemento de la matriz, si no que cargaremos o recuperaremos la variable con la matriz completa

Page 16: Asp

• Ejemplo:• <%Dim parametros(2)

parametros(0) = "verde"parametros(1) = 640parametros(2) = 480Application.LockApplication("Param") =parametros%>Application.UnLock

Page 17: Asp

• con estas instrucciones almacenaríamos TODA la matriz en la variable de aplicación "Param" Para recuperar los valores de la matriz primero recuperamos esta en una variable normal

• <%Apliparam=Application("Param")%>• Ahora podremos operar con los valores

de la tabla en las variables Apliparam(0), Apliparam(1) y Apliparam(2)

Page 18: Asp

Acceso a datos desde ASP a SQL

• 1 - Conexión con DSN (ejemplo para Access)

La conexión con DSN es la más cómoda, pero sólo se puede utilizar si tenemos acceso al Panel de Control de la máquina servidor. Por supuesto si estamos contrayendo una intranet tenemos el server a nuestro alcance y a su Panel de Control.

Page 19: Asp

• Si simplemente estamos aprendiendo ASP y usamos el PWS (Personal Web Server) o el IIS 4 de NT también disponemos de esta comodidad.Veamos como se realiza la conexión a una base de datos de Microsoft Access:

Page 20: Asp

• Creamos nuestra base de Datos en Microsoft Access y la guardamos. Luego vamos a Inicio > Configuración > Panel de Control y allí elegimos Fuentes de Datos ODBCAl ingresar nos encontramos con una pantalla que es el administrador de orígenes de datos ODBC. En la solapa DSN de Usuario presionamos el botón Agregar.

Page 21: Asp

• Luego seleccionamos Microsoft Access Driver (*.mdb) y presionamos Finalizar. Ahora se hará la conexión ODBC. Presionamos el botón Seleccionar y elegimos nuestra Base de Datos e ingresamos el nombre de la base en el primer campo.Por último el botón AceptarSi todo salió bien debería aparecer el nombre de nuestra Base de Datos en la solapa DSN de usuario y ya tendremos hecha nuestra conexión ODBC a BS.

Page 22: Asp

• Ahora debemos conectar la base de datos en la pagina ASP

Como vieron no es algo difícil... solo hay que aprenderse la linea de conexión. Pero recuerden que esto no servirá si suben su BS y su sitio a internet. Para esto deben usar la siguiente conexón.

Page 23: Asp

• 2 - Conexión sin DSN Este tipo de conexión es más complicada, pero es lo que debemos utilizar si queremos olvidar el panel de control, ya que hacemos la conexión a la base de datos mediante comandos. Además es mas rápida ;)Observar bien bien la sintaxis... ya que es lo que nos trae los problemas siempre.

Page 24: Asp

• Para Access usando ODBC:

Page 25: Asp

• Para Access 97 usando OLEDB:

Page 26: Asp

• Para Access 2000 usando OLEDB:

Page 27: Asp

• Para SQL Sever:

Page 28: Asp

• Importante: En los 3 primeros ejemplos, referidos todos a conexiones con bases de datos Access, use un path fijo. Lo puse así, para el mejor entendimiento, pero generalmente se hace uso de la función Server.MapPath() la cual devuelve el path donde ejecutamos el script

Page 29: Asp

• Les intentaré explicar el uso de esa función mediante un ejemplo que no tiene que ver con conexión a base de datos, pero intentaré que se relacione.

Page 30: Asp

• El código ejecutado, muestra el contenido de la variable path

Como ven la variable path contiene el directorio donde se ejecuta el script.Entonces esto se podría usar para indicar el path a la base de datos (que en los ejemplo anteriores lo escribíamos a mano)

Page 31: Asp

Inyección SQL en ASPEjemplo

• La inyección SQL consiste en la modificación del comportamiento de nuestras consultas mediante la introducción de parámetros no deseados en los campos a los que tiene acceso el usuario.

Page 32: Asp

• Este tipo de errores puede permitir a usuarios malintencionados acceder a datos a los que de otro modo no tendrían acceso y, en el peor de los casos, modificar el comportamiento de nuestras aplicaciones.Vamos a ver con un ejemplo que significa eso de “Inyección de código”: Supongamos que tenemos una aplicación Web (realizada en ASP por sencillez) en la que el acceso a ciertas secciones está restringido.

Page 33: Asp

• Para restringir ese acceso creamos una tabla de usuarios y contraseñas y sólo los usuarios que se validen contra esa tabla podrán acceder a esos contenidos. Una manera de que los usuarios se validen será colocar un par de cuadros de texto en nuestra página Web (por ejemplo txtUsuario y txtPassword) donde puedan introducir su nombre y su contraseña y enviar ese par usuario/contraseña a la base de datos para comprobar si es válido. Primero creamos la tabla que vamos a usar y la rellenamos con datos:

Page 34: Asp

• use web-- Nuestra base de datos se llama webgo-- Creamos una tabla para almacenar los pares usuario/contraseñacreate table usuarios (Usuario varchar (50) not null primary key, Password varchar (50))go-- Introducimos un par de datos de pruebainsert into usuarios (Usuario, Password) values ('Admin', '1234')insert into usuarios (Usuario, Password) values ('Usuario', 'abcd')

Page 35: Asp

• Ahora veamos el código de las páginas que forman parte del proceso de login.

• index.htm<form action="login.asp" method="post"> Nombre: <input type="text" name="txtUsuario"><br> Password: <input type="password" name="txtPassword"><br> <input type="submit"></form>

Page 36: Asp

• Esta primera página es sencilla. Simplemente los dos cuadros de texto mencionados que enviarán los datos a la página de login.

Page 37: Asp

• Login.asp<% Dim Usuario, Password, RS, SSQL Usuario = Request.Form("txtUsuario") Password = Request.Form("txtPassword") SSQL = "SELECT count(*) FROM Usuarios WHERE Usuario = '" & Usuario & "' AND password='" & Password & "'" Set RS = Server.CreateObject("ADODB.Recordset") RS.Open SSQL, "Cadena de conexión" If (RS.EOF) Then Response.Write "Acceso denegado." Else Response.Write "Te has identificado como " & RS("Usuario") End If Set RS = Nothing%>

Page 38: Asp

• Y en esta segunda página creamos dinámicamente una sentencia SQL que enviamos a la base de datos para la validación. Si el usuario escribe Admin y 1234 la sentencia creada será:

• “SELECT Count(*) FROM Usuarios WHERE Usuario=’Admin’ AND Password=’1234’”