IaM_SePia Yo soy el foro


Registrado: 07 Feb 2007
Mensajes: 833
|
Publicado: Jue Mar 22, 2007 1:22 pm Título del mensaje: ASP (aprender poquito a poquito) |
|
|
En clase hemos empezado con ASP y bueno os cuelgo el resumito que me he echo de momento...
ASP
¿Qué es el ASP? Mezcla de código VisualBasic y HTML.
En HTML se introduce la siguiente etiqueta “<%” todo lo que vaya en medio tiene que ser VB. Se cierra poniendo “%>”.
Para que funcione la extensión de la página tiene que ser “.ASP”.
Las páginas ASP tienen que estar guardadas en el servidor. En el directorio del raíz del servidor. (www.root)
El servidor es el que ejecuta el código que lleva la página.
Para ejecutar la página ASP se pone...
localhost/pag.ASP
localhost es la propia página. También se puede poner en vez de “localhost” 127.0.0.1/página.asp
Al ejecutar una página el servidor crea un objeto RESPONSE, este objeto es como un documento de word en blanco.
El servidor irá mirando la página enviada línea a línea e irá escribiendo en el objeto RESPONSE todas las líneas que no sean ASP, las que lo sean directamente las omitirá.
En ASP poner “<%= “ sirve para imprimir, es lo mismo que poner RESPONSE.WRITE. Sólo se puede poner si no hay antes otro carácter “<%” que no esté cerrado. Tiene que estar aislado.
Lo que haya entre el RESPONSE.WRITE puede ir entre paréntesis.
Cuando acaba de mirar todas las líneas, envía el objeto RESPONSE de vuelta al que lo haya solicitado, pero sólo recibirá HTML puro y duro.
<HTML><HEAD><TITLE>Primera página</TITLE></HEAD><BODY> <%=date %><br> <%= now %><br><%for x=1 to 6 RESPONSE.WRITE “<H” & x & “>Hola manola</H” & x &”>”next%></BODY></HTML>
Si una página no usa código ASP y se renombra como ASP haremos trabajar de más al servidor, ya que mirará todas las líneas antes de devolver el objeto RESPONSE.
Las variables no están tipificadas, son todas del tipo “variant”.
Aunque existen las cadenas de conversión, o sea, se puede convertir un, digamos “String” a “integer” si fuéramos a hacer operaciones matemáticas con esa variable.
Cookie -> variable que se guarda en el ordenador del cliente.
Cuando nos volvamos a conectar a el mismo sitio web nuestro ordenador envia la cookie. Unicamente lo hace en la web creadora de la cookie.
Si queremos enviar una cokie lo tnemos que hacer a traves del objeto response.
Si queremos enviar cualquier cosa lo tenemos que hacer
Cada vez que un usuario me pide una pagina en el IIS se crea un objeto REQUEST, ahí esta guardada toda la información de la petición que ha hecho el usuario. Cuando lo hace da mucha información como IP, SO... El objeto request seria lo mismo que el response pero a nivel de usuario.
REQUEST.FORMà ahí me vienen todas las respuestas que un usuario ha metido en un Formulario siempre y cuando use el metodo POST
Recuerda que:
<FORM NAME=F1 METHOD=POST ACTION=”PROCESA.ASP”>
GET
Cuando le damos a clickar empaqueta todo lo que hemos puesto segun el metodo get o post y hace una peticion a procesa.asp. Si nos ha enviado por el metodo post la empaquetacion de la información lo recibiremos en el objeto REQUEST.FORM
Si lo hacemos con el metodo GET lo recuperamos en el REQUEST.QUERYSTRING
Sin especificar el request que tenemos podemos hacer trabajar un poco mas el ordenador. El ordenador primero mirara si devuelve algo con el request.querystring y si no hay nada mira el .form
Si no encuentra nada en ninguno de los dos no PETA!.
Response -> salida
Request -> petición que nos hace
OBJETO SERVER
El objeto server lo vamos a usar para usar una serie de librerias. Cuando trabajemos con bd estas en asp constan de 3 elementos: connection, recordset, command. (esto lo veremos mas a fondo mas adelante)
Todo lo que hagamos en bd lo haremos ocn estos objetos.
Connection à conectarnos a una base de datos. Decir de que tipo es y donde se encuentra.
Recordset à objeto donde se guarda la consulta que se realizará en SQL. Un objeto que es como si fuera una tabla, pero una tabla que devuelve una consulta. Este objeto tiene tantas columnas como tenga la consulta que hemos hecho. Si no devuelve nada no peta simplemente se queda este objeto vacio.
Command à Realizar instrucciones a una base de datos.
Todos estos objetos dependen del server. Para crear un objeto connection lo que tendremos que hacer es: Server.createobject(“”ADDDB.CONNECTION”)
Decimos que nos cree un objeto connection que se encuentra dentro de la librería ADDDB
Si le damos algo que contenga texto, tanto una variable string como un texto:
<%= SERVER.HTMLENCODE(“------“)%>
Htmlencode le pasas una cadena y lo que hace es analizar lo que encuentra (todos los signos que puedan ser conflictivos) y pasa su equivalente a html (asi de esta manera no se puede ejecutar scripts de java ni marcas de html pq el signo > lo pondría como >)
OBJETO APPLICATION
Zona de trabajo que afecta a todas las sesiones. Desde las sesiones se pueden entrar a los objetos aplication. Cada usuario tiene una sesion que no interfieren
El primer usuario que crea una aplicación es el primero que ejecuta la aplicación (es el primero que pone en marcha la aplicación, no se vuelve a poner en marcha otra vez ya que es comun para todos los usuarios!). Solo se detienen las aplicaciones a no ser que paremos el servidor. Solo ejecuta la aplicación el primero que visita la aplicación después ya se mantiene ejecutada.
Representa el objeto aplicación. Un proyecto en Visual Basic esta formado por varios formularios. Una aplicación en Basic .asp puede contener muchas páginas
Una aplicación es como un proyecto, todas las paginas que forman un único proyecto.
Como hago yo para decir al ordenador que forman parte de una aplicación?
En principio las pag. se tienen que guardar en wwwroot pero todas las paginas formarian parte de mi sitio web.
Para definir una aplicación tenemos que crear una carpeta y todas las paginas que forman la aplicación meterlas dentro y además hay que informarle al IIS que esa carpeta forma una aplicación y crear un directorio virtual.
OBJETO SESSION
Lo primero que se ejecuta cuando accedemos a un fichero de una aplicación (como el form load). Solo se ejecuta una vez por usuario aunque no se haya pasado la condición de validación que hayamos incluido.
La primera vez que lo pide se crea una sesión y se esta 20 min.(por defecto) sin destruirse la sesión del usuario, la sesión se destruye si nos estamos 20 min. sin hacer ninguna petición a un fichero de la aplicación (se hace por seguridad para que en el caso de una empresa nadie que no sea la persona encargada de realizar el trabajo con esa aplicación pueda toquetearla). Si nos estamos moviendo por la sesión no se destruye (actúa como un salvapantallas). Cuando se crea una sesión para un usuario en realidad se esta asignando un hueco de memoria en el servidor donde se inicializan una serie de variables definidas por el programador que se mantienen al usuario hasta que se destruya la sesión.
El programador puede destruir la sesión del usuario usando el comando ABANDON.SESSION
Lo que podemos hacer al acceder a una página es validar la entrada del usuario haciendo un control de acceso.
Pondríamos algo así: SESSION(“VALIDADO”)=FALSE
Al inicio de la ejecución de la página y lo mandaríamos a la página de login de la aplicación.
El concepto de sesión es muy importante para controlar (sobretodo restringir) los accesos a nuestras aplicaciones.
Cada sesión tiene su aplicación (carpeta donde tenemos todos los archivos de la aplicación)
Todo el que se valide tiene derecho a ver todas las páginas? NO!, podemos asignar cuales son las paginas al que puede acceder dándole una serie de permisos según el nivel de usuario que tenga de usuario.
Este objeto nos permitirá controlar la sesión del usuario
Es bueno destruir la sesión cuando un usuario no entra pq aunque no entre se esta asignando un hueco en la memoria durante 20 minutos.
Los objetos que acaban en plural son colecciones (igual que pasa con visual).
Las variables que recibe el servidor es información acerca de la máquina del usuario. El que recibe la petición mirando las variables consigue mucha informacion
REQUEST.SERVERVARIABLES(“REMOTE_ADDR”)
REMOTE_ADDR à Nos dice la Ip del usuario que visita la página.
LAS VARABLES EM VISUALBASIC SCRIPT NO TIENEN QUE ESTAR TIPIFICADAS! NO EXISTEN LOS TIPOS. TODAS SON VARIANTS.
Ex8
Pasa por cada servervariables y metelas dentro de una variable llamada nom.
Si c es un numero par guardamos color khaki sino guardamos el color palengoldenrot
La primera vez que un usuario nos pide una nuestra de paginas se crea la sesion para él y creamos dos variables. Una que se llama validado=false y nivel=99.
Se ejecuta cuando creamos el sesionOnState (se encuentra guardado en el “globalaza”):
Miraremos primero si esta validado y después si tiene derecho en entrar a esa pagina.
Apartir de ahora empezaremos las páginas ASP con una condición (recuerda que para recojerlo se usa este objeto) usando el objeto request.form cuando hace una petición un cliente, haciendonos una pregunta a nosotros mismos para que se pueda autogestionar a si misma sin hacer falta que sea enviada a otra página donde procesará lo ocurrido en caso que tenga que ejecutar código en ASP.
Seria asi si nuestra página se llamara ENTRADA
Tiene que tener el mismo nombre para que se pueda llamar asi misma.
Seria lo mismo decir request.form=”” que len(request.form)=0
Recuerda que según con el método que enviemos la información del formulario usaremos el objeto form (post) o el objeto querystring (get).
La primera vez que lo pedimos se muestra el formulario y después de aquí muestra la palabra ya que el request.form deja de ser 0 o de estar vacío.
<BODY>
<% IF REQUEST.FORM="" THEN %>
<FORM NAME=F1 METHOD=POST ACTION ENTRADA.ASP>
NOM <INPUT TYPE=TEXT NAME=NOM><BR>
COGNOMS <INPUT TYPE=TEXT NAME=COGNOMS><BR>
<INPUT TYPE=SUBMIT>
</FORM>
<% ELSE %>
Hola <%=REQUEST.FORM("NOM") & " " & REQUEST.FORM("COGNOMS") %>
<% END IF %>
OBJETO RESPONSE
RESPONSE.BUFFER
Si tenemos que hacer consultas muy bestias y queremos mostrar lo que esta sucediendo sin esperarnos a que acabe del todo (para dar sensación de que trabaja) lo ponemos a Trae.
RESPONSE.REDIRECT
Permite redireccionar a una página. Es muy util para enviar a una página para tener en cuenta de que todo el mundo que accede a la aplicación se encuentra validado.
Hay que tener muy claro el concepto de aplicación!:
APLICACIÓN:
Conjunto de páginas que se encuentran dentro de un directorio que definimos como directorio virtual. Cualquier cosa que metamos dentro de esa carpeta forma pasrte de esa aplicación. Dentro de esa carpeta podemos definir subcarpetas que tmb forman parte de esa aplicación.
Esta carpeta la podemos crear desde dónde nos de la gana ya que crearemos una carpeta virtual (no hace falta que se encuentre dentro del directorio virtual.
Podemos poner el directorio virtual donde queramos no hace falta tenerlo en la raiz del IIS (wwwroot).
Por aplicación tenemos un fichero que actúa como un form_load
Desde una aplicación no se puede acceder a otra si no se lo permitimos nosotros el acceso de validación! Se encuentran como aisladas entre ellas. Asi podemos hacer que cada aplicación tenga un entorno de trabajo diferente.
El IIS enrealidad tiene 3 cosas instaladas (servidor web, FTP y de correo).
El servidor de correo sirve para enviar aquello que hablamos de los mails de la pagina del Lara.
Nuestro servidor de correos solo es util para enviar (solo activado SMTP, falta el POP para enviar)… no para recibir, son asi los de Microsoft.
Para ejecutar el asistente para crear un directorio virtual:
Panel de control à Herramientas Administrativas à Servicios de Internet à Sitio Web Predeterminado (con el boton derecho, nuevo… directorio virtual).
La carpeta y el alias suele ser el mismo.
Si usamos un alias diferente al nombre de la carpeta, para llamar cualquier página que se contenga en esa carpeta tendremos que usar en el navegador el alias que apunta a la carpeta.
Con esto hemos conseguido es que a partir de este momento el ordenador entiende que esa carpeta es una aplicación, todo lo que contenga dentro forma parte de un proyecto.
Toda aplicación puede tener, o no, un fichero llamado GLOBAL.ASA, es un fichero que da una serie de instrucciones a la aplicación.
Normalmente todas las tienen. Solo hay un fichero GLOBAL.ASA por aplicación (por directorio virtual, es lo mismo). Se tiene que encontrar en el directorio raiz de la aplicación (la carpeta en el nivel superior de todo el contenido de la aplicación).
Cada vez que se ejecuta la aplicación se ejecuta el GLOBAL.ASA (es como un form_load de visual o un AUTOEXEC.BAT de MSDOS).
Antes de que se encuentre c:\> se ejecuta el archivo .bat
El Global.asa va muy bien para definir variables globales a nivel de aplicación , para inicializarlas.
Si ponemos un fichero GLOBAL.ASA en una carpeta que no es la raiz de la apliacacion pasará de él, no lo tendrá en cuenta. Unicamente lo tendrá en cuenta si está en la carpeta raíz!.
Siempre que se conecta alguien al proyecto se ejecuta el archivo GLOBAL.ASA
Un global.asa completo puede estar compuesto de 4 subrutinas.
APPLICATION.ONSTART
El evento Application.OnStart se ejecuta la primera vez que se ejecuta la aplicación (la primera vez que se llame una página de la aplicación), excepto en dos casos: si modifico el global.asa (el IIS se keda con la copla que se ha modificado y vuelve a ejecutarlo) o si se ha parado el servidor (si paramos el ordenador y lo volvemos a encender o si la conexión al servidor se va al garete)
Normalmente el que pone enmarcha la aplicación es el propio programador para probar si funciona bien.
Podemos definir variables application que son públicas a nivel de cualquier página (como las definidas en módulos en Visual) que se encuentre en ese proyecto y cualquier usuario que se encuentre en esa sesión.
APPLICATION(“EMPRESA”)=”INSTITUT”
SESSION.ONSTART
Se ejecuta después del Application.OnStart. Se ejecuta cada vez que se conecta un usuario a esa aplicación (se inicializan variables de sesión).
También podemos tener variables de sesión. Las variables de sesión son únicas por usuario mientras que las variables de aplicación son únicas para la aplicación (cada usuario que se conecte tendrá una serie de variables en el espacio disponible en la memoria del servidor)
Cuando se crea una sesión (espacio de trabajo) va a la memoria del pc y la reserva para el usuario que se acaba de conectar.
SESSION(“USER”)=””
Va bien destruir la sesión para liberar la memoria del servidor con SESSION.ABANDON
SISTEMA DE VALIDACION QUE NOS SERVIRÁ PARA SIEMPRE
Definimos una mat. con 3 usuarios tridimensional, cuando lo hagamos enserio lo haremos con una base de datos.
Para acceder a una pagina tendra que pasar 2 validaciones, una del registro (que tiene derecho a entrar en la aplicación). Estar registrado no tiene pq tener derecho a entrar a todos los recursos de la aplicación.
En realidad es una matriz de 4 elementos pero pasamos del primer elemento ( el 0) y empezamos desde el 1.
El primer campo de la matriz es el nombre, el segundo la contraseña y el tercer campo el nivel de usuario.
Hacemos un bucle de 3 vueltas ya que tenemos 3 usuarios.
Si damos las 3 vueltas y no se produce le metemos el mensaje de error.
Las variables de sesion se pueden crear donde queramos, no solo se puede hacer en el global.asa
Si el usuario no viene de ninguna página sino que va directamente a la pagina LOGIN.asp lo redijiremos a la pantalla de inicio de la aplicación envez de la página que hubiese pedido (ya que no la ha pedido!)
Para incluir un fichero tenemos que poner:
<!--#include file=”pagina.asp” à
Lo que hace el ordenador es como si metiera el contenido de esa página y entonces lo empieza a ejecutar.
Ten en cuenta de que esto no es un comentario. La # va enganchada al guion si no lo estubiese iria un espacio.
<%' -------------- CABECERA.ASP ------------------- IF SESSION("OK")=FALSE THEN session("PAGINA")=request.servervariables("script_name")' guardamos nombre de la página que estamos viendo en este momento para despues de la validación podamos' redireccionar a esa página response.Redirect "LOGIN.ASP"' mandamos a la página login END IF IF SESSION("NIVEL")>NivelPag THEN response.Redirect "errorPermisos.ASP" END IF%> _________________ Sólo hay 10 tipos de personas, las que entendemos código binario, y las que no...
|
|
IaM_SePia Yo soy el foro


Registrado: 07 Feb 2007
Mensajes: 833
|
Publicado: Jue Mar 22, 2007 1:24 pm Título del mensaje: |
|
|
Siento el lenguaje tan coloquial ya que són apuntes echos por mi, por lo tanto nada de palabras técnicas, si teneis alguna duda oa lgo intentaré ayudaros.. aunque ya os digo, hemos empezado hace un par de semanas
Salduos _________________ Sólo hay 10 tipos de personas, las que entendemos código binario, y las que no...
|
|