|
Weitergabe von Parametern bei HTML-Seiten
| Temporäre Cookies | Dauerhafte Cookies | Verborgene Eingabe-Felder | HTML-Aufruf mit Parametern | Session-Object |
Vorbemerkungen
|
Hier werden die Programmbeispiele so dargestellt, wie man es mit ASP auf der Server-Seite programmieren
müsste. Wer sich mit CGI und Perl auskennt oder mit PHP3, wird die Beispiele sicherlich in diese
Programmiersprachen übersetzen können. Bei den Beispielen werden hier keine vollständigen Programm-Beispiele geboten, sondern es werden nur die Zeilen gezeigt, die zur Erklärung der beschriebenen Techniken nötig sind. Kleinere vollständige Programmbeispiele für die Programmierung mit ASP findet man bei mir unter der Seite asp.htm.
Warum sind die unten beschriebenen Tricks erforderlich?
|

|
Ein Cookie ist ein Stück Information, dass beim Benutzer zwischengespeichert wird. Es handelt sich um
eine beliebige Zeichenkette. Meist sind es ein oder mehrere Parameter, die das ASP-Programm später
benötigt, um beim nächsten Aufruf richtig weiter machen zu können. Wozu kann man sie benutzen? Immer wenn man in Folgeaufrufen einer ASP-Seite oder auch bei anderen ASP-Seiten der selben Sitzung, wissen möchte, was der Benutzer vorher gemacht hat. Ein Beispiel Wenn man einen Internet-Laden programmiert, muss man sich irgendwo merken, was der Benutzer bisher in seinem Einkaufswagen hat. Wie sieht das ASP-Programm aus?
|
<%
option explicit
dim Liste
'******************************* cookie lesen ******************
' der cookie "Einkauf" enthält im Parameter "Wagen" eine Liste mit den bestellten Artikeln.
' Dieser Parameter ist nur eine Zeichenkette, deren Inhalt man selbst gestalten muss –
' zum Beispiel: "3xA027;7xB033;12xW103"
if Request.Cookies("Einkauf").hasKeys then
Liste=Request.Cookies("Einkauf")("Wagen")
else
Liste=""
end if
'******************************* hier steckt ein bisschen Programmierarbeit:
' Aus dem Formular werden Anzahl und Artikel-Nr eines weiteren angeklickten Artikels geholt.
' Die Liste muss jetzt um diesen Artikel ergänzt werden.
'******************************* cookie schreiben ***************
Response.Cookies("Einkauf")("Wagen") = Liste
'************************************************************
'Hier beginnen die HTML-Anweisungen - mit einem Formular, in dem der Benutzer
'Artikel auswählen kann)
%>
<HTML>
...
</HTML>
|
| Temporäre Cookies | Dauerhafte Cookies | Verborgene Eingabe-Felder | HTML-Aufruf mit Parametern | Session-Object |
|
Alles was über temporäre Cookies gesagt wurde, trifft auch für dauerhafte Cookies zu. Der einzige Unterschied ist,
dass sie in einer Datei abgespeichert werden und das ASP-Programm kann sich diese Daten beim nächsten Aufruf zurückgeben
lassen – das kann am nächsten Tag sein oder vielleicht im nächsten Monat. Dauerhafte Cookies enthalten ein Verfallsdatum. Wozu kann man sie benutzen? Dauerhafte Cookies wird man dann benutzen, wenn man dem Benutzer das erneute Eingeben von Daten ersparen möchte. Ein Beispiel Bei einer Bestellung (zum Beispiel Bücher) muss der Benutzer mindest seine Lieferadresse angeben und auch Informationen darüber, wie er zahlen möchte. Wenn er wieder einmal etwas bestellen möchte, sind diese Daten noch auf seinem PC als Cookie gespeichert und er muss sie nicht wieder eintippen. Wie sieht das ASP-Programm aus? Die HTML-Seite, wo der Benutzer seine Daten eingibt und wo dann auch der Cookie gespeichert wird und die HTML-Seite, wo dann der Cookie wieder gelesen wird, können die gleiche HTML-Seite oder aber auch verschiedene Seiten sein. |
<%
'************ beim ersten Aufruf Daten aus dem Cookie holen
if Request.Cookies("Kunde").hasKeys then
neu=false
Vorname=Request.Cookies("Kunde")("Vorname")
Nachname=Request.Cookies("Kunde")("Nachname")
Strasse=Request.Cookies("Kunde")("Strasse")
Ort=Request.Cookies("Kunde")("Ort")
PLZ=Request.Cookies("Kunde")("PLZ")
else
neu=true
end if
'************* beim Folgeaufruf Daten aus den Formular-Feldern holen
' Wie man erkennt, ob es der Erstaufruf oder ein Folgeaufruf ist,
' siehe Kapitel "Dialogsteuerung"
Vorname=Request.Form("Vorname")
Nachname=Request.Form("Nachname")
Strasse=Request.Form("Strasse")
Ort=Request.Form("Ort")
PLZ=Request.Form("PLZ")
'************** Schreiben des Cookie
Response.Cookies("Kunde")("Vorname") = Vorname
Response.Cookies("Kunde")("Nachname") = Nachname
Response.Cookies("Kunde")("Strasse") = Strasse
Response.Cookies("Kunde")("Ort") = Ort
Response.Cookies("Kunde")("PLZ") = PLZ
Response.Cookies("Kunde").Expires = #July 1, 2005#
%>
<HTML>
<HEAD>
<TITLE>ein Test</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="Test.asp">
<%if neu then%>
Geben Sie bitte Ihre Daten ein!
<%else%>
Dies sind Ihre Daten – Sie können Sie ändern
<% end if%>
<BR>Vorname: <INPUT TYPE="TEXT" NAME="Vorname" VALUE="<%=Vorname%>" MAXLENGTH=24>
<BR>Nachname: <INPUT TYPE="TEXT" NAME="Nachname" VALUE="<%=Nachname%>" MAXLENGTH=24>
<BR>Straße: <INPUT TYPE="TEXT" NAME="Strasse" VALUE="<%=Strasse%>" MAXLENGTH=24>
<BR>Postleitzahl: <INPUT TYPE="TEXT" NAME="PLZ" VALUE="<%=PLZ%>" MAXLENGTH=5>
<BR>Ort:<INPUT TYPE="TEXT" NAME="Ort" VALUE="<%=Ort%>" MAXLENGTH=24 >
</BODY>
</HTML>
|
| Temporäre Cookies | Dauerhafte Cookies | Verborgene Eingabe-Felder | HTML-Aufruf mit Parametern | Session-Object |
|
In einem HTML-Formular gibt es Eingabe-Felder, die der Benutzer nicht sehen kann und deren Inhalt er auch gar nicht ändern kann (TYPE=HIDDEN). Sie werden also unverändert zwischen Benutzer-PC und Internet-Server hin- und hergeschickt. Wozu kann man sie benutzen? Verborgene Eingabefelder kann anstelle von temporären cookies verwenden. Der einzige Unterschied ist, dass der Benutzer nicht gefragt wird, ob er cookies empfangen möchte. Das ASP-Programm kann also ebensogut verborgene Eingabefelder benutzen, um Daten zwischenzuspeichern. Ein Beispiel Hier können wir dasselbe Beispiel wie für die temporären Cookies verwenden - nämlich den Inhalt eines Einkaufswagens verwalten. Wie sieht das ASP-Programm aus?
|
<%
option explicit
dim Liste
'******************************* Liste mit den bisher ausgesuchten Artikeln holen
' das verborgene Eingabefeld "Wagen" enthält eine Liste mit den bestellten Artikeln,
' zum Beispiel folgende Zeichenfolge: "3xA027;7xB033;12xW103"
Liste=Request.Form("Wagen")
'******************************* hier steckt ein bisschen Programmierarbeit:
' Aus dem Formular werden Anzahl und Artikel-Nr eines weiteren ausgewählten Artikels geholt.
' Die Liste muss jetzt um diesen Artikel ergänzt werden.
'****************************************************
'Hier beginnen die HTML-Anweisungen (sicherlich mit einem Formular)
%>
<HTML>
...
<BODY>
...
irgendwo im Formular steht dann dieses verborgene Feld, in das die aktuelle Liste eingesetzt wird:
<INPUT TYPE="HIDDEN" NAME="Wagen" Value=<%=Liste%>>
...
</BODY>
</HTML>
|
| Temporäre Cookies | Dauerhafte Cookies | Verborgene Eingabe-Felder | HTML-Aufruf mit Parametern | Session-Object |
|
Man kann hinter der Adresse einer HTML-Seite ein Fragezeichen schreiben und dahinter Parameter, die man diesem Aufruf mitgeben möchte. Das sieht etwa so aus: www.xyz.de/meinLaden.htm?Vorname=Bill&Alter=27
Also immer paarweise Name des Parameters und Wert des Parameters durch ein Gleichheitszeichen verbunden. Zwischen
mehreren Parameter-Paaren steht immer ein "&". Wozu kann man das benutzen? Möchte man den Benutzer von einer HTML-Seite eine weitere Seite aufrufen lassen und dabei Parameter mitgeben, so muss man das durch die oben geschilderte Weise tun. Cookies kann man dazu nicht benutzen, weil es beim Aufruf einer zweiten Seite in der vorangegangenen Seite gar nicht mehr zum Abspeichern eines cookies kommt. Ein Beispiel Man könnte in der Eröffnungsseite eines Internet-Schuhgeschäftes anbieten, zur Herren-, Damen- oder Kinderabteilung zu verzweigen. Dabei wird jedesmal dasselbe Programm gerufen. Die gewünschte Abteilung wird dabei als Parameter mitgegeben. Wie sieht das ASP-Programm aus? Auf der Seite von der man weiter verzweigen möchte schreibt man die "links" mit Parametern: <A HREF="Einkaufen.asp?Abt=Damen">hier geht es zur Damen-Abteilung</A><BR> <A HREF="Einkaufen.asp?Abt=Herren">hier geht es zur Herren-Abteilung</A><BR> <A HREF="Einkaufen.asp?Abt=Kinder">hier geht es zur Kinder-Abteilung</A><BR>In der Seite Einkaufen.asp holt man sich diesen Parameter und bestimmt damit, welche Artikel man dem Kunden zur Auswahl anbietet:
Abteilung=Request.QueryString("Abt")
if Abteilung ="Damen" then
'hier werden die Damen-Schuhe aus der Artikel-Tabelle geholt
end if
if Abteilung ="Herren" then
'hier werden die Herren-Schuhe aus der Artikel-Tabelle geholt
end if
if Abteilung ="Kinder" then
'hier werden die Kinder-Schuhe aus der Artikel-Tabelle geholt
end if
'danach folgt die HTML-Seite, in der dem Kunden die jeweiligen Artikel angezeigt werden.
|
| Temporäre Cookies | Dauerhafte Cookies | Verborgene Eingabe-Felder | HTML-Aufruf mit Parametern | Session-Object |
|
Eine Session (also eine Sitzung) ist das Aufrufen von einem oder verschiedenen Programmen bis zum Schließen des Browsers. Wozu kann man das benutzen? In der Wirkung ist das Ganze nichts anderes als die Benutzung von cookies. Dem Session-Object kann man außer verschiedenen Parametern auch arrays und auch Objekte mitgeben. Ein Beispiel Man möchte gerne zeitaufwendige Operationen, die man in den Folgeaufrufen immer wieder erneut durchführen müsste, möglich nur einmal beim ersten Aufruf erledigen. Hier zum Beispiel die Verbindung zur Datenbank (ADODB.connection). Wie sieht das ASP-Programm aus?
'Hier wird die Verbindung zur Datenbank hergestellt
Set myConnection = server.CreateObject("ADODB.Connection")
myConnection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("TestDB.mdb")
'Hier werden zwei Werte und ein Verweis auf die Datenbank-Verbindung (ein Object) gespeichert
Session("Vorname")="Karl-Hugo"
Session("Nachname")="Mustermann"
Set Session("Conn")=myConnection
'Hiermit holt man sich die Daten wieder zurück
Wert1=Session("Parameter1")
Wert2=Session("Parameter2")
Set myConnection=Session("Conn")
'danach ist Wert1="Karl-Hugo" und Wert2="Mustermann" und
'myConnection zeigt auf die Datenbank
'Wenn der Benutzer seinen browser neustartet sind die Werte wieder
'vergessen (die SessionID auch!!! Wozu man die benutzen kann, habe ich noch nicht herausgefunden)
|