Okay, auf gehts. Dieser Workshop soll euch einiges über die Datei global.asa zeigen.
Diese Datei verwendet der IIS von Microsoft, und ist komplett in VBScript geschrieben.
Da diese Datei pro Session nur ein mal ausgeführt wird, eignet sie sich besonders gut um Seitenbesuche zu zählen, bzw. um eine Statistik der einzelnen Sessions anzulegen.
Also es wird nicht wie bei diesen "Front Page"-Countern jeder Hit auf eine Seite gezählt, sondern nur wirkliche, echte Sessions. Dieser Counter ist somit viel aussagekräftiger!
Eine Session beginnt mit der ersten Seite die aufgerufen wird und endet wenn die Seite geschlossen wird, oder der Server ein Timeout bekommt.
Diese beiden Events (Session_onStart, Session_onEnd)
kann man in der global.asa ausprogrammieren.
Das Grundgerüst dieser Seite sieht so aus:
Zitat<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_onStart()
Hier kommt der Code für diese Sub rein
End SubSub Session_onEnd()
Hier kommt der Code für diese Sub rein
End Sub</SCRIPT>
Sobald also jemand irgenteine Seite eurer Website besucht startet eine neue Session und die Sub Session_onStart wird ausgeführt.
In dieser Funktion sollte man jetzt das Datum und die Uhrzeit in einer Datenbank speichern, wann diese Session angefangeb hat.
Ausserdem gut zu wissen, mit welchen Browser ist der Besucher auf deiner Seite.
Die Uhrzeit und das Datum kann man wie folgt auslesen:
ZitatDatum = Date
Zeit = Time
Um den Browser rauszukriegen kann man am besten auf die Servervariablen zurückgreifen.
So eine Abfragewürde dann so aussehen:
ZitatBrowser = Request.Servervariables("HTTP_USER_AGENT")
Es gibt jetzt noch 2 dinge die ganz interessant für eine Statistik sind: 1. Besuche insgesamt, 2. Besuche zur Zeit.
Für diese beiden Counter müssen wir schon etwas in die Trickkiste greifen.
Der erste, wieviele Besucher insgesamt da sind ist noch nicht so schwer. Man liest sich aus der Datenbank den Wert aus, erhöht diesen um 1 und speichert ihn wieder in der Datenbank.
Für den Wert wieviele Beucher im Moment auf der Seite sind muss man sich schon was einfallen lassen.
Es muss ja ein Wert sein, der in jeder Session zur verfügung steht. Und weil dieser Wert sich ständig ändern kann ist ein zuriff auf eine Datenbank eigentlich relativ blöde (das würde viel zu viel Zeit in anspruch nehmen)
Allerdings bietet uns ASP ja das Application Objekt.
Das Application Objekt is dem Session Objekt sehr ähnlich, nur mit dem Unterschied, das die Werte im Application Objekt überall gültig sind, und nicht nur innerhalb einer Session (wie beim Session Objekt).
Wenn jetzt also jemand deine Website betritt dann geschiht folgendes:
ZitatApplication("NumOfVisitors") = Application("NumOfVisitors") + 1
Im Prinzip war das jetzt schon alles für die Sub Session_onStart.
Fehlt nur noch die Sub Session_onEnd
Dort wird jetzt wieder die Zeit und das Datum bestimmt, wann die Session beendet wurde, und in einer Datenbank abgelegt.
Die Anzahl der momentanen besucher wird mit:
ZitatApplication("NumOfVisitors") = Application("NumOfVisitors") - 1
aktualisiert.
Fertig.
Allderdings fehlt ja jetzt noch eine Sache, wir haben zwar am Anfang der Session alle Werte bekommen, aber wir müssen Sie ja auch irgentwo wieder ausgeben:
das geschieht auf jeder beliebigen Seite die Du dafür programmierst. Achtung, es muss eine ASP Seite sein.
Wenn Du dir in der Sub Session_onStart alle Werte in ein neues Session Objekt schreibst, z.B.:
ZitatSession("TotalHits") = Wertaus der Datenbank
Auf der entsprechenden Seite kannst du Dir dann mit:
ZitatResponse.Write(Session("TotalHits"))
diese Daten ausgeben.
Das gleicht funktioniert übrigens auch mit dem Application Objekt
Die Ausprogrammierung überlasse ich diesmal euch.
Als Datenbank empfehle ich eine Access Datenbank.
Natürlich geht das auch mit jeder anderen Datenbank.
Ich hoffe dieser Workshop konnte euch etwas nutzen.
Wenn jemand Fragen hat, weden wir diese Fragen hier besprechen.