En primer lugar, .asa es el sufijo del archivo, que es la abreviatura de Active Server Application. El archivo Global.asa puede gestionar dos objetos muy exigentes en aplicaciones ASP: Aplicación y Sesión.
En realidad, es un archivo opcional en el que los escritores de programas pueden especificar scripts de eventos y declarar objetos con alcance de sesión y aplicación. El contenido de este archivo no se utiliza para mostrarlo al usuario, sino para almacenar información de eventos y objetos utilizados globalmente por la aplicación. Este archivo debe colocarse en el directorio raíz de la aplicación. Sólo puede haber un archivo Global.asa por aplicación.
La idea errónea más común sobre el archivo Global.asa es que puede usarse como una biblioteca para funciones y subrutinas de uso común. El archivo Global.asa solo se puede utilizar para crear referencias de objetos y capturar inicios, y para finalizar objetos de Aplicación y objetos de Sesión.
Se accede al archivo Global.asa principalmente en función de eventos a nivel de sesión y se llama en las tres situaciones siguientes:
1. Cuando se activa el evento Application_OnStart o Application_OnEnd.
2. Cuando se activa el evento Session_OnStart o Session_OnEnd.
3. Al hacer referencia a un objeto (Objeto) instanciado en el archivo Global.asa.
El formato de archivo estándar de Global.asa es el siguiente:
<IDIOMA DE ESCRITURA=VBScript RUNAT=Servidor>
Subaplicación_OnStart
'Application_OnStart se ejecuta cuando un cliente visita por primera vez la página de inicio de la aplicación.
Subtítulo final
SubSession_OnStart
'Session_OnStart se ejecuta cuando el cliente ejecuta por primera vez cualquier página en la aplicación ASP
Subtítulo final
SubSession_OnEnd
'Session_OnEnd Se ejecuta cuando la sesión de un cliente expira o sale de la aplicación
Subtítulo final
Subaplicación_OnEnd
'Application_OnEnd se ejecuta cuando el servidor WEB del sitio está cerrado
Subtítulo final
</SCRIPT>
1. Sesión_al iniciar
Primero veamos un código que controla a los usuarios para ingresar a la página:
1. Global.asa (ubicado en el directorio raíz del directorio virtual que se está depurando)
<IDIOMA DE ESCRITURA=VBScript RUNAT=Servidor>
Sub Session_OnStart 'Siempre que el usuario inicie sesión en este sitio por primera vez, saltará a la página de inicio
respuesta.redirect (http://www.vevb.com)
Subtítulo final
</SCRIPT>
Luego depure cualquier archivo en el directorio virtual actual y encontrará que todas las páginas saltan a http://www.vevb.com/<
A través de este ejemplo de forzar la entrada a una determinada página, puedes imaginar que es muy necesario cuando la página de inicio necesita atención.
Sigamos observando los eventos Session_OnStart y Session_OnEnd usando un ejemplo de la cantidad de personas en línea.
2. Sesión_al finalizar
2. Global.asa (ubicado en el directorio raíz del directorio virtual que se está depurando)
<IDIOMA DE ESCRITURA=VBScript RUNAT=Servidor>
Sub Application_onStart 'El valor inicial es 0
Solicitud (en línea) = 0
Subtítulo final
Sub Session_onStart 'Un usuario accede al recuento y suma 1
Bloqueo de aplicación
Solicitud (en línea) = Solicitud (en línea) + 1
Aplicación.Desbloquear
Subtítulo final
Sub Session_OnEnd 'El final de un proceso de usuario, el recuento se reduce en 1 (PD, si no existe tal programa de evento, se ejecutará el programa de acceso a la página).
Bloqueo de aplicación
Solicitud (en línea) = Solicitud (en línea) - 1
Aplicación.Desbloquear
Subtítulo final
</SCRIPT>
3.en línea.asp
<%
si request.querystring(logout)=true entonces
sesión.Abandon()
respuesta.fin
terminar si
%>
Actualmente hay <%=Application(OnLine)%> en línea
<a href=online.asp?logout=true>Salir</a>
Descubrirá que solo hay una aplicación (en línea) en esta página y todavía se hace referencia a ella explícitamente. Entonces, ¿de dónde viene su valor? Esta es la clave del archivo Global.asa. Puede abrir ventanas en secuencia en esta máquina y realizar la depuración de dos maneras: cerrar la ventana o salir.
3. Continuar perfeccionando
En el programa anterior, encontrará que el efecto de cerrar la ventana después de salir de la conexión es diferente al de cerrar la ventana directamente. Debido a que la sesión existe durante mucho tiempo, el evento Session_OnEnd no se puede activar cuando la ventana se cierra directamente, entonces, ¿cómo implementar esta idea casi imposible?
Como todos sabemos, cuando se cierra una página web, se puede asociar con un evento de descarga. Entonces, siempre que la descarga pueda realizar la función de cierre de sesión, ¿no es eso lo que necesitamos? Sin más preámbulos, modifiquemos online.asp
3.en línea.asp
<%
si request.querystring(logout)=true entonces
sesión.Abandon()
respuesta.fin
terminar si
%>
<cuerpo de descarga=javascript:ventana.abierta(salida.asp)>
Actualmente hay <%=Application(OnLine)%> en línea
<a href=online.asp?logout=true>Salir</a>
Tenga en cuenta que cuando online.asp realiza la descarga, se abrirá exit.asp. Luego simplemente configure session.Abandon() en exit.asp y estará bien.
4.salir.asp
<% sesión.Abandon()%>
<guión>
auto.cerrar()
</script>
Por supuesto, se agrega un Script para cerrar la sesión inmediatamente después de cerrar sesión. Ahora básicamente basta con una aplicación web para estadísticas online.
4. Estudio en profundidad de Global.asa
De la depuración anterior, si saca conclusiones de un ejemplo, definitivamente hará una pregunta: ¿Cómo controlar la cantidad de usuarios registrados en línea? Luego mire los siguientes archivos uno por uno:
5. Global.asa (ubicado en el directorio raíz del directorio virtual que se está depurando)
<IDIOMA DE ESCRITURA=VBScript RUNAT=Servidor>
Subaplicación_OnStart
solicitud (en línea) = 0
Subtítulo final
SubSession_OnStart
Subtítulo final
SubSession_OnEnd
si session.contents(pass) entonces 'Determina si es el Session_OnEnd del usuario que inició sesión
bloqueo.de.aplicación
solicitud (en línea) = solicitud (en línea) -1
aplicación.desbloquear
terminar si
Subtítulo final
Subaplicación_OnEnd
Subtítulo final
</SCRIPT>
Tenga en cuenta que el bloque Session_OnStart en este Global.asa no realiza ningún evento.
Porque una vez que un usuario accede al servidor, independientemente de si el usuario ha iniciado sesión, se generará el evento OnStart, y lo que se necesita ahora es que el usuario que inició sesión esté en línea, por lo que la Aplicación (en línea) no se puede aumentar en 1 en el evento OnStart.
Y debido a que el evento OnEnd se generará independientemente de si finaliza la sesión del usuario que inició sesión (si un visitante visita el servidor pero no inicia sesión, el evento OnEnd también se generará después de que finalice su sesión), por lo que una declaración if se utiliza en el evento Session_OnEnd para juzgar si es el evento OnEnd de un usuario que inició sesión; de ser así, la cantidad de personas en línea se reducirá en 1.
Y vale la pena señalar: el uso de session.contents(pass), porque el uso de objetos Session está prohibido en el evento OnEnd, pero las variables de sesión se pueden llamar usando una colección de objetos Session. En otras palabras, la sesión (contraseña) no se puede escribir directamente, pero es necesario escribir session.contents (contraseña).
6. iniciar sesión.asp
<%
si request.querystring(logout)=true entonces
sesión.Abandon()
terminar si
enviar nombre = solicitud. formulario (enviar)
si enviar nombre = enviar entonces
nombre=solicitud.formulario(nombre)
contraseña=solicitud.formulario(contraseña)
si nombre=cnbruce y pwd=cnrose entonces
sesión(nombre)=nombre
sesión(contraseña)=verdadero
demás
Response.write Nombre de error o contraseña.<a href='login.asp'>Volver</a>
respuesta.fin
terminar si
bloqueo.de.aplicación
solicitud (en línea) = solicitud (en línea) +1
aplicación.desbloquear
%>
Actualmente hay <%=application(online)%> miembros registrados.
<a href=login.asp?logout=true>Salir</a>
<% más%>
<formulario acción=login.asp método=publicar>
<tipo de entrada=nombre de texto=nombre><br>
<tipo de entrada=nombre de contraseña=contraseña><br>
<tipo de entrada=enviar nombre=enviar valor=enviar>
<%finalizar si%>
Simplemente detecta que cuando el nombre de usuario es cnbruce y la contraseña es cnrose, se genera una sesión (contraseña) = verdadero, que se juzga en Global.asa.
Cinco, continúa usando tu imaginación.
No basta con contar cuántas personas están en línea, sino también determinar el estado de conexión del usuario.
Como puede imaginar, el método básico es que cuando el usuario inicia sesión, establezca en línea en 1 en login.asp (cargue si hay una base de datos), pero cuando el usuario está desconectado, establezca en línea en 0. Para mejorarlo, puede Es necesario modificar el evento Session_OnEnd. Establecer en línea en 0 en este evento (el valor de 0 también se cargará)...