AspGerman Wiki

Bearbeiten

Für noch Unentschlossene

einige simple Beispiele, die mal eben schnell auf einem Server ausprobiert werden können. Damit getroffene Annahme ein installierter IIS ist irgendwo vorhanden.

ASP-Dateien sind erstmal übliche html-Dateien die als Endung .asp haben. Server-code wird zwischen <% und %> eingeschlossen. Das heisst wenn der Server diese Zeichen sieht weiss er jetzt much ich was tun. Er führt den Programmcode an der Stelle aus und falls der Code einen Befehl zur Ausgabe von HTML hat wird das vom Server generierte HTML in das restliche, statische HTML eingefügt.

<html>
<body>
<p>Hallo Welt, es ist jetzt <% = now() %></p>
</body>
</html>

Dieses Script in eine test.asp Datei gepackt, auf den Server gestellt und im brower http://server/test.asp eingeben. Der Server holt die Datei, findet den Programmcode und führt ihn aus und liefert an den Browser aufgelöstes HTML an.

Übrigens, das Gleichheitszeichen ist die Faulenzerform für response.write. Das folgende Beispiel ist daher funktional identisch

<html>
<body>
<p>Hallo Welt, es ist jetzt <% response.write now() %></p>
</body>
</html>

Natürlich lässt sich das Datum auch auf verschiedene Arten formatieren. Es gibt übrigens drei Funktionen: date() liefert das Datum, time() die Uhrzeit und now() liefert beides. Demonstriert am folgendes Beispiel

<html>
<body>
<ul>
  <li>Das Datum in Kurzform ist <b><% = FormatDateTime(Now(), 2) %></b></li>
  <li>Das Datum in Langform ist <b><% = FormatDateTime(Now(), 1) %></b></li>
  <li>Das Datum in Allgemeiner Form ist <b><% = FormatDateTime(Now(), 0) %></b></li>
  <li>Die Zeit in Servereinstellung ist <b><% = FormatDateTime(Now(), 3) %></b></li>
  <li>Die Zeit in 24h Darstellung ist <b><% = FormatDateTime(Now(), 4) %></b></li>
</ul>
</body>
</html>

Wird die Seite umfangreicher und ich will nicht immer im HTML rumsuchen wo da welcher Code steht empfiehlt sich mit Variablen zu arbeiten und den relevanten Code an den Anfang der Seite zu stellen. Oder ans Ende wer es so rum lieber hat.

<%
dim variable
variable = now()
%>
<html>
<body>
<p>Hallo Welt, es ist jetzt <% = variable %></p>
</body>
</html>

Jetzt mal etwas sinnigeres mit der Zeit angefangen

<%
dim stunde, gruss
stunde = hour(now())
If stunde > 18 Then
  gruss = "Guten Abend"
ElseIf stunde < 9 Then
  gruss = "Guten Morgen"
Else
  gruss = "Guten Tag"
End If
%>
<html>
<body>
<p>Ich wünsche einen <% = gruss %></p>
</body>
</html>

Soll es ein bischen komplizierter werden empfiehlt sich ein Case-Aufbau

<%
Select Case hour(now())
  Case 1,2,3,4,5,23,0
    Gruss = "Hallo Nachtwandler"
  Case 6,7,8,9
    Gruss = "Guten Morgen"
  Case 18, 19,20,21,22
    Gruss = "Guten Abend"
  Case Else
    Gruss = "Grüß Gott"
End Select
%>

Weiter mit Ausgabe und HTML wie oben

Nochmal das Thema Datum aufgebohrt. Hier wird zu bestimmten Zeiten ein passende Meldung angezeigt. Zur Info: eine Datumskonstante (ein festes Datum) wird in VBScript in der amerikanischen Form #mm/tt/jj# angegeben. Also Monat und Tag vertauscht und Schrägstrich als Trennzeichen. Hint und vorne das Nummernkreuz. Falls Zeit dazukommt mit einem Leerzeichen abtrennen und in 24-Stunden Notation angeben.

<%
   Dim Gruss, Ausnahme, Ausnahmen(6)
  
   Ausnahmen(0) = Array(#12/24/2004 0:00#, #12/24/2008 23:59#, "Wir wünschen Frohe Weihnachten und einen stimmungsvollen Heiligen Abend")
   Ausnahmen(1) = Array(#12/25/2004 0:00#, #12/25/2008 23:59#, "Wir wünschen Ihnen Frohe Weihnachten und einen schönen 1. Feiertag")
   Ausnahmen(2) = Array(#12/26/2004 0:00#, #12/26/2008 23:59#, "Wir wünschen Ihnen Frohe Weihnachten und einen schönen 2. Feiertag")
   Ausnahmen(3) = Array(#12/30/2004 0:00#, #12/31/2008 22:59#, "Wir wünschen Ihnen ein erfolgreiches Neues Jahr")
   Ausnahmen(4) = Array(#12/31/2004 23:00#, #1/1/2008 12:59#, "Prosit Neujahr")
   Ausnahmen(5) = Array(#1/1/2009 13:00#, #1/3/2009 0:00#, "Auf ein gutes Gelingen im Jahr 2005")
   Ausnahmen(6) = Array(#10/9/2007 0:00#, #10/15/2007 23:00#, "Bis bald zur Mitgliederversammlung")
  
   For each Ausnahme in Ausnahmen
     If Ausnahme(0) <= now() and Ausnahme(1) >= now() Then
       Gruss = Ausnahme(2)
       Exit For
     End If   
   Next
%>

Weiter mit Ausgabe (Variable Gruss) und HTML wie oben



Eine einfache Anwendung von ASP sind Serverside Includes. Dabei fügt der Server vor dem Senden der Seite an den Browser eine andere Datei in die Seite ein. Dies verwendet man etwa um Kopf- oder Fusszeilen einzubinden, die immer gleich sein sollen. Aus Sicherheitsgründen sollten die auch .ASP heissen. Nicht .INC wie sich vielleich an mancher Stelle findet. Es gibt zwei Formen eines Includes

Die eingefügte Datei befindet sich im selben Verzeichnis wie die übergeordnete Datei



Die eingefügte Datei befindet sich in einem virtuellen Verzeichnis irgendwo auf dem Server



  1. Übrigens 1: aus Sicherheitsgründen kann es sein dass das zweite Beispiel nicht für jedes Verzeichnis funktionert.
  2. Übrigens 2: der alte Ansatz für Serverside Includes war den HTLM-Seite eine Endung wie .STM, oder SHTM, oder STHML zu geben. Das funktioniert auch nach wie vor und kann, wenn kein Code ausgeführt werden soll, anstelle von .ASP alternativ verwendet werden.

Einen schlauen Spruch des Tages einblenden geht etwa mit folgendem Code

<%
Option Explicit
dim tx, murphy

tx = Array("Nichts ist so leicht wie es aussieht.",_
"Alles dauert länger als man denkt.",_
"Alles was schief gehen kann wird auch schiefgehen.",_
"Von verschiedenen möglichen Pannen wird immer die eintreten, die den größten Schaden anrichtet.",_
"Wenn gerade der ungünstigste Zeitpunkt für eine Panne ist, wird sie genau dann passieren.",_
"Wenn man vier mögliche Fehlerquellen erkannt und beseitigt hat, wird sich daraus sofort eine fünfte entwickeln, auf die man nicht vorbereitet ist.",_
"Sich selbst überlassen, tendieren alle Dinge von schlecht nach schlechter.",_
"Wenn irgendwas einfach nicht schiefgehen kann, dann wird es dies irgendwie doch.",_
"Wenn irgendwas scheinbar gut funktioniert, hat man offensichtlich irgendwas übersehen.",_
"Die Natur steht immer auf der Seite des verborgenen Fehlers.",_
"Es ist unmöglich irgendetwas narrensicher zu machen, denn Narren sind ja so erfinderisch.",_
"Immer wenn man sich irgendetwas vornimmt, muß etwas anderes zuvor erledigt werden.",_
"Jede Lösung erzeugt neue Probleme.",_
"Vertraue jedem ... und dann markiere die Spielkarten.",_
"Zwei Fehler sind erst der Anfang.",_
"Wenn etwas beim ersten Mal nicht klappt, dann vernichte alle Bedienungsanleitungen, die Du ausprobiert hast.",_
"Ausnahmen bestätigen die Regel ... und ruinieren den Geldbeutel.",_
"Erfolge zeigen sich nur im Verborgenen und Fehler immer in der Öffentlichkeit.")

murphy = tx(second(now()) mod 18)
%>

Klar dass ich im HTML die Variable murphy ausgeben muss?

Letztes Änderungsdatum der Datei ausgeben

<%
   Dim fso, f, dLcd, output
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(Server.MapPath(Request.ServerVariables("URL")))
   dLcd = f.DateLastModified
   output = Day(dLcd) & "." & Month(dLcd) & "." & Year(dLcd)
%>

ScrewTurn Wiki version 2.0.33. Some of the icons created by FamFamFam.