Tout d’abord, .asa est le suffixe du fichier, qui est l’abréviation d’Active Server Application. Le fichier Global.asa peut gérer deux objets très exigeants dans les applications ASP : Application et Session.
Il s'agit en fait d'un fichier facultatif dans lequel les auteurs de programmes peuvent spécifier des scripts d'événements et déclarer des objets avec une portée de session et d'application. Le contenu de ce fichier n'est pas utilisé pour être affiché à l'utilisateur, mais est utilisé pour stocker des informations sur les événements et les objets utilisés globalement par l'application. Ce fichier doit être placé dans le répertoire racine de l'application. Il ne peut y avoir qu'un seul fichier Global.asa par application.
L'idée fausse la plus courante à propos du fichier Global.asa est qu'il peut être utilisé comme bibliothèque pour les fonctions et sous-programmes couramment utilisés. Le fichier Global.asa peut uniquement être utilisé pour créer des références d'objet et capturer des démarrages, ainsi que pour terminer des objets Application et des objets Session.
Le fichier Global.asa est principalement accessible en fonction d'événements au niveau de la session et est appelé dans les trois situations suivantes :
1. Lorsque l'événement Application_OnStart ou Application_OnEnd est déclenché.
2. Lorsque l'événement Session_OnStart ou Session_OnEnd est déclenché.
3. Lors du référencement d'un objet (Object) instancié dans le fichier Global.asa.
Le format de fichier standard de Global.asa est le suivant :
<SCRIPT LANGUAGE=VBScript RUNAT=Serveur>
Sous-application_OnStart
'Application_OnStart S'exécute lorsqu'un client visite pour la première fois la page d'accueil de l'application
Fin du sous-marin
Sous-Session_OnStart
'Session_OnStart s'exécute lorsque le client exécute pour la première fois une page de l'application ASP
Fin du sous-marin
Sous-session_OnEnd
'Session_OnEnd S'exécute lorsque la session d'un client expire ou quitte l'application
Fin du sous-marin
Sous-Application_OnEnd
'Application_OnEnd s'exécute lorsque le serveur WEB du site est arrêté
Fin du sous-marin
</SCRIPT>
1. Session_onStart
Examinons d'abord un code qui contrôle les utilisateurs pour accéder à la page :
1. Global.asa (placé sous le répertoire racine du répertoire virtuel en cours de débogage)
<SCRIPT LANGUAGE=VBScript RUNAT=Serveur>
Sub Session_OnStart 'Tant que l'utilisateur se connecte à ce site pour la première fois, il accédera à la page d'accueil
réponse.redirect(http://www.vevb.com)
Fin du sous-marin
</SCRIPT>
Déboguez ensuite n'importe quel fichier dans le répertoire virtuel actuel, vous constaterez que toutes les pages accèdent à http://www.vevb.com/<
A travers cet exemple de forcer l'accès à une certaine page, vous pouvez imaginer que cela est très nécessaire lorsque la page d'accueil nécessite une attention particulière.
Continuons à observer les événements Session_OnStart et Session_OnEnd en utilisant un exemple du nombre de personnes en ligne.
2. Session_onEnd
2. Global.asa (placé sous le répertoire racine du répertoire virtuel en cours de débogage)
<SCRIPT LANGUAGE=VBScript RUNAT=Serveur>
Sub Application_onStart 'La valeur initiale est 0
Candidature (en ligne) = 0
Fin du sous-marin
Sub Session_onStart 'Un utilisateur visite et le nombre est augmenté de 1
Application.Lock
Application (En ligne) = Application (En ligne) + 1
Application.Déverrouiller
Fin du sous-marin
Sub Session_OnEnd 'La fin d'un processus utilisateur, le compte est réduit de 1 (PS s'il n'existe pas de programme d'événement de ce type, le programme d'accès à la page sera exécuté.)
Application.Lock
Application (En ligne) = Application (En ligne) - 1
Application.Déverrouiller
Fin du sous-marin
</SCRIPT>
3.online.asp
<%
si request.querystring(logout)=true alors
session.Abandon()
réponse.end
finir si
%>
Il y a actuellement des <%=Application(OnLine)%> en ligne
<a href=online.asp?logout=true>Quitter</a>
Vous constatez qu'il n'y a qu'une seule application (en ligne) sur cette page, et elle est toujours référencée explicitement. Alors d’où vient sa valeur ? C'est la clé du fichier Global.asa. Vous pouvez ouvrir les fenêtres en séquence sur cette machine et effectuer le débogage de deux manières : fermer la fenêtre ou quitter.
3. Continuez à affiner
Dans le programme ci-dessus, vous constaterez que l'effet de la fermeture de la fenêtre après avoir quitté la connexion est différent de celui de la fermeture directe de la fenêtre. Parce que la Session existe depuis longtemps, l'événement Session_OnEnd ne peut pas être déclenché lorsque la fenêtre est fermée directement, alors comment réaliser cette idée presque impossible ?
Comme nous le savons tous, lorsqu'une page Web est fermée, elle peut être associée à un événement onunload. Donc, tant que onunload peut effectuer la fonction de déconnexion de la session, n'est-ce pas ce dont nous avons besoin ? Sans plus tarder, modifions online.asp
3.online.asp
<%
si request.querystring(logout)=true alors
session.Abandon()
réponse.end
finir si
%>
<body onunload=javascript:window.open(exit.asp)>
Il y a actuellement des <%=Application(OnLine)%> en ligne
<a href=online.asp?logout=true>Quitter</a>
Notez que lorsque online.asp effectue un déchargement, exit.asp sera ouvert. Ensuite, définissez simplement session.Abandon() dans exit.asp et tout ira bien.
4.exit.asp
<%session.Abandon()%>
<script>
soi.close()
</script>
Bien entendu, un script est ajouté pour fermer la session immédiatement après la déconnexion. Désormais, une application Web pour les statistiques en ligne suffit.
4. Étude approfondie de Global.asa
À partir du débogage ci-dessus, si vous tirez des conclusions à partir d’un exemple, vous vous poserez certainement une question : comment contrôler le nombre d’utilisateurs enregistrés en ligne ? Regardez ensuite les fichiers suivants un par un :
5. Global.asa (placé sous le répertoire racine du répertoire virtuel en cours de débogage)
<SCRIPT LANGUAGE=VBScript RUNAT=Serveur>
Sous-application_OnStart
candidature (en ligne)=0
Fin du sous-marin
Sous-Session_OnStart
Fin du sous-marin
Sous-session_OnEnd
if session.contents(pass) then 'Déterminez s'il s'agit de la Session_OnEnd de l'utilisateur connecté
application.lock
application (en ligne)=application (en ligne)-1
application.déverrouiller
finir si
Fin du sous-marin
Sous-Application_OnEnd
Fin du sous-marin
</SCRIPT>
Notez que le bloc Session_OnStart dans ce Global.asa ne réalise aucun événement.
Parce qu'une fois qu'un utilisateur accède au serveur, qu'il soit connecté ou non, l'événement OnStart sera généré, et ce qu'il faut maintenant, c'est que l'utilisateur connecté soit en ligne, donc l'application (en ligne) ne peut pas être augmentée de 1 dans l'événement OnStart.
Et parce que l'événement OnEnd sera généré indépendamment du fait que la session de l'utilisateur connecté se termine ou non (si un visiteur visite le serveur mais ne se connecte pas, l'événement OnEnd sera également généré après la fin de sa session), donc une instruction if est utilisé dans l'événement Session_OnEnd pour juger s'il s'agit de l'événement OnEnd d'un utilisateur connecté, si tel est le cas, le nombre de personnes en ligne sera réduit de 1.
Et il convient de noter : l'utilisation de session.contents(pass), car l'utilisation d'objets Session est interdite dans l'événement OnEnd, mais les variables de session peuvent être appelées à l'aide d'une collection d'objets Session. En d'autres termes, session(pass) ne peut pas être écrit directement, mais session.contents(pass) doit être écrit.
6. connexion.asp
<%
si request.querystring(logout)=true alors
session.Abandon()
finir si
submitname=request.form(soumettre)
si submitname = soumettre alors
nom=request.form(nom)
mot de passe = requête.form (mot de passe)
si nom=cnbruce et pwd=cnrose alors
session(nom)=nom
session (réussite) = vrai
autre
réponse.write Nom de l'erreur ou mot de passe.<a href='login.asp'>Retour</a>
réponse.end
finir si
application.lock
application (en ligne)=application (en ligne)+1
application.déverrouiller
%>
Il y a actuellement <%=application(online)%> membres inscrits.
<a href=login.asp?logout=true>Quitter</a>
<%else%>
<form action=login.asp method=post>
<input type=text name=name><br>
<input type=password name=pwd><br>
<type d'entrée=nom de soumission=valeur de soumission=soumission>
<%end if%>
Il détecte simplement que lorsque le nom d'utilisateur est cnbruce et que le mot de passe est cnrose, une session(pass)=true est générée, qui est jugée dans Global.asa.
Cinquièmement, continuez à utiliser votre imagination
Il ne suffit pas de compter le nombre de personnes en ligne, mais également de déterminer le statut en ligne de l'utilisateur.
Comme vous pouvez l'imaginer, la méthode de base est que lorsque l'utilisateur se connecte, définissez en ligne sur 1 dans login.asp (télécharger s'il existe une base de données), mais lorsque l'utilisateur est hors ligne, définissez en ligne sur 0. Pour l'améliorer, vous vous devez modifier l'événement Session_OnEnd. Définissez en ligne sur 0 dans cet événement (la valeur de 0 sera également téléchargée)...