Erstens ist .asa das Dateisuffix, die Abkürzung für Active Server Application. Die Datei Global.asa kann zwei sehr anspruchsvolle Objekte in ASP-Anwendungen verwalten: Anwendung und Sitzung.
Es handelt sich eigentlich um eine optionale Datei, in der Programmautoren Ereignisskripte angeben und Objekte mit Sitzungs- und Anwendungsbereich deklarieren können. Der Inhalt dieser Datei wird nicht zur Anzeige für den Benutzer verwendet, sondern zum Speichern von Ereignisinformationen und Objekten, die global von der Anwendung verwendet werden. Diese Datei muss im Stammverzeichnis der Anwendung abgelegt werden. Pro Anwendung kann nur eine Global.asa-Datei vorhanden sein.
Das häufigste Missverständnis über die Datei Global.asa besteht darin, dass sie als Bibliothek für häufig verwendete Funktionen und Unterprogramme verwendet werden kann. Die Datei Global.asa kann nur zum Erstellen von Objektverweisen und Erfassungsstarts sowie zum Beenden von Anwendungsobjekten und Sitzungsobjekten verwendet werden.
Der Zugriff auf die Datei Global.asa erfolgt hauptsächlich basierend auf Ereignissen auf Sitzungsebene und wird in den folgenden drei Situationen aufgerufen:
1. Wenn das Ereignis Application_OnStart oder Application_OnEnd ausgelöst wird.
2. Wenn das Ereignis Session_OnStart oder Session_OnEnd ausgelöst wird.
3. Beim Verweisen auf ein Objekt (Object), das in der Datei Global.asa instanziiert ist.
Das Standarddateiformat von Global.asa ist wie folgt:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
'Application_OnStart Wird ausgeführt, wenn ein Kunde zum ersten Mal die Homepage der Anwendung besucht
Sub beenden
SubSession_OnStart
'Session_OnStart wird ausgeführt, wenn der Client zum ersten Mal eine Seite in der ASP-Anwendung ausführt
Sub beenden
SubSession_OnEnd
'Session_OnEnd Wird ausgeführt, wenn die Sitzung eines Clients abläuft oder die Anwendung beendet wird
Sub beenden
Sub Application_OnEnd
'Application_OnEnd wird ausgeführt, wenn der WEB-Server der Site heruntergefahren wird
Sub beenden
</SCRIPT>
1. Session_onStart
Schauen wir uns zunächst einen Code an, der Benutzer steuert, um die Seite aufzurufen:
1. Global.asa (im Stammverzeichnis des zu debuggenden virtuellen Verzeichnisses platziert)
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart 'Solange sich der Benutzer zum ersten Mal auf dieser Site anmeldet, springt er zur Startseite
Response.redirect(http://www.vevb.com)
Sub beenden
</SCRIPT>
Debuggen Sie dann eine beliebige Datei im aktuellen virtuellen Verzeichnis. Sie werden feststellen, dass alle Seiten zu http://www.vevb.com/< springen
Anhand dieses Beispiels für den erzwungenen Zugriff auf eine bestimmte Seite können Sie sich vorstellen, dass dies sehr wichtig ist, wenn die Startseite Aufmerksamkeit erfordert.
Beobachten wir weiterhin die Ereignisse Session_OnStart und Session_OnEnd anhand eines Beispiels für die Anzahl der Personen, die online sind.
2. Session_onEnd
2. Global.asa (im Stammverzeichnis des zu debuggenden virtuellen Verzeichnisses platziert)
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_onStart 'Anfangswert ist 0
Anwendung (Online) = 0
Sub beenden
Sub Session_onStart 'Ein Benutzer greift auf die Zählung zu und fügt 1 hinzu
Anwendungssperre
Bewerbung(Online) = Bewerbung(Online) + 1
Anwendung.Entsperren
Sub beenden
Sub Session_OnEnd 'Am Ende eines Benutzerprozesses wird die Anzahl um 1 reduziert (PS: Wenn kein solches Ereignisprogramm vorhanden ist, wird das Seitenzugriffsprogramm ausgeführt.)
Anwendungssperre
Bewerbung(Online) = Bewerbung(Online) - 1
Anwendung.Entsperren
Sub beenden
</SCRIPT>
3.online.asp
<%
Wenn request.querystring(logout)=true, dann
session.Abandon()
Antwort.Ende
Ende wenn
%>
Derzeit sind <%=Application(OnLine)%> online
<a href=online.asp?logout=true>Beenden</a>
Sie stellen fest, dass es auf dieser Seite nur eine Anwendung (OnLine) gibt und dennoch explizit darauf verwiesen wird. Woher kommt also sein Wert? Dies ist der Schlüssel zur Datei Global.asa. Sie können auf diesem Computer nacheinander Fenster öffnen und das Debuggen auf zwei Arten durchführen: Fenster schließen oder beenden.
3. Verfeinern Sie weiter
Im obigen Programm werden Sie feststellen, dass das Schließen des Fensters nach dem Beenden der Verbindung einen anderen Effekt hat als das direkte Schließen des Fensters. Da die Sitzung schon lange existiert, kann das Ereignis Session_OnEnd nicht direkt beim Schließen des Fensters ausgelöst werden. Wie lässt sich diese fast unmögliche Idee verwirklichen?
Wie wir alle wissen, kann das Schließen einer Webseite mit einem Onunload-Ereignis verknüpft werden. Solange Onunload die Abmeldefunktion der Sitzung ausführen kann, ist das nicht das, was wir brauchen? Lassen Sie uns ohne weiteres online.asp ändern
3.online.asp
<%
Wenn request.querystring(logout)=true, dann
session.Abandon()
Antwort.Ende
Ende wenn
%>
<body onunload=javascript:window.open(exit.asp)>
Derzeit sind <%=Application(OnLine)%> online
<a href=online.asp?logout=true>Beenden</a>
Beachten Sie, dass, wenn online.asp „onunload“ ausführt, „exit.asp“ geöffnet wird. Setzen Sie dann einfach „session.Abandon()“ in „exit.asp“ und es ist in Ordnung.
4.exit.asp
<%session.Abandon()%>
<Skript>
self.close()
</script>
Natürlich wird ein Skript hinzugefügt, um die Sitzung sofort nach dem Abmelden zu schließen. Nun reicht im Grunde eine Webanwendung für Online-Statistiken.
4. Eingehende Untersuchung von Global.asa
Wenn Sie aus dem obigen Debugging Schlussfolgerungen aus einem Beispiel ziehen, werden Sie auf jeden Fall eine Frage stellen: Wie kann die Anzahl der registrierten Benutzer online gesteuert werden? Schauen Sie sich dann nacheinander die folgenden Dateien an:
5. Global.asa (im Stammverzeichnis des zu debuggenden virtuellen Verzeichnisses platziert)
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
Bewerbung(online)=0
Sub beenden
SubSession_OnStart
Sub beenden
SubSession_OnEnd
if session.contents(pass) then 'Bestimmen Sie, ob es sich um Session_OnEnd des angemeldeten Benutzers handelt
application.lock
Bewerbung(online)=Bewerbung(online)-1
application.unlock
Ende wenn
Sub beenden
Sub Application_OnEnd
Sub beenden
</SCRIPT>
Beachten Sie, dass der Session_OnStart-Block in dieser Global.asa keine Ereignisse ausführt.
Denn sobald ein Benutzer auf den Server zugreift, wird unabhängig davon, ob der Benutzer angemeldet ist, das OnStart-Ereignis generiert. Jetzt muss der angemeldete Benutzer online sein, sodass die Anwendung (online) nicht um 1 erhöht werden kann das OnStart-Ereignis.
Und da das OnEnd-Ereignis unabhängig davon generiert wird, ob die Sitzung des angemeldeten Benutzers endet (wenn ein Besucher den Server besucht, sich aber nicht anmeldet, wird das OnEnd-Ereignis auch nach dem Ende seiner Sitzung generiert), also eine if-Anweisung wird im Session_OnEnd-Ereignis verwendet, um zu beurteilen, ob es sich um das OnEnd-Ereignis eines angemeldeten Benutzers handelt. Wenn ja, wird die Anzahl der Online-Personen um 1 reduziert.
Und es ist erwähnenswert: die Verwendung von session.contents(pass), da die Verwendung von Session-Objekten im OnEnd-Ereignis verboten ist, die Session-Variablen jedoch über eine Sammlung von Session-Objekten aufgerufen werden können. Mit anderen Worten, session(pass) kann nicht direkt geschrieben werden, session.contents(pass) muss jedoch geschrieben werden.
6. login.asp
<%
Wenn request.querystring(logout)=true, dann
session.Abandon()
Ende wenn
einreichenname=request.form(einreichen)
Wenn Submitname=Submit, dann
name=request.form(name)
pwd=request.form(pwd)
wenn name=cnbruce und pwd=cnrose dann
Sitzung(Name)=Name
session(pass)=true
anders
Response.write-Fehlername oder Pwd.<a href='login.asp'>Zurück</a>
Antwort.Ende
Ende wenn
application.lock
Bewerbung(online)=Bewerbung(online)+1
application.unlock
%>
Derzeit sind <%=application(online)%> registrierte Mitglieder.
<a href=login.asp?logout=true>Beenden</a>
<%else%>
<form action=login.asp method=post>
<Eingabetyp=Textname=Name><br>
<Eingabetyp=Passwortname=pwd><br>
<Eingabetyp=Submit-Name=Submit-Wert=Submit>
<%end if%>
Es erkennt einfach, dass bei einem Benutzernamen mit cnbruce und einem Kennwort mit cnrose eine Sitzung (pass) = true generiert wird, die in Global.asa beurteilt wird.
Fünftens: Lassen Sie Ihrer Fantasie weiterhin freien Lauf
Es reicht nicht aus, nur zu zählen, wie viele Personen online sind, sondern auch, den Online-Status des Benutzers zu ermitteln.
Wie Sie sich vorstellen können, besteht die grundlegende Methode darin, dass beim Anmelden des Benutzers online in login.asp auf 1 gesetzt wird (Hochladen, wenn eine Datenbank vorhanden ist). Wenn der Benutzer jedoch offline ist, wird online auf 0 gesetzt. Um es zu verbessern, können Sie es verbessern Sie müssen das Session_OnEnd-Ereignis in diesem Ereignis online auf 0 ändern (der Wert 0 wird ebenfalls hochgeladen) ...