Version 2003 (Geändert)
Der 4D Web Server bietet verschiedene "Form actions" in URL und HTML, um bestimmte Aktionen in Ihrer Datenbank zu integrieren, sowohl im kontextuellen als im nicht kontextuellen Modus.
Es gibt folgende URLs:
4DMETHOD/, um ein beliebiges HTML Objekt mit einer Projektmethode Ihrer Datenbank im kontextuellen Modus zu verbinden.
4DACTION/, um ein beliebiges HTML Objekt mit einer Projektmethode Ihrer Datenbank im nicht kontextuellen Modus zu verbinden.
4DCGI/, um die Datenbankmethode On Web Connection von einem beliebigen HTML Objekt aus aufzurufen.
Hinweis: 4D Web Server akzeptiert einige zusätzliche URLs:
/4DSTATS, /4DHTMLSTATS, /4DCACHECLEAR und /4DWEBTEST. Damit erhalten Sie Informationen über die Funktionsweise Ihrer 4D Web Site. Weitere Informationen dazu finden Sie im Abschnitt Information über die Web Site.
/4DWSDL, um den Zugriff auf die Deklarationsdatei der Web Services zu erlauben, die auf dem Server veröffentlicht werden. Weitere Informationen dazu finden Sie im Abschnitt Befehle für Web Services (Server) und im Handbuch 4D Designmodus.
URL 4DACTION/
Syntax: 4DACTION/MyMethod/Param
Modus: Nicht kontextuell. Bei Aufrufen im kontextuellen Modus wird in den nicht kontextuellen Modus umgeschaltet.
Verwendung: URL oder "Form action".
Über diese URL können Sie ein HTML Objekt (Text, Schaltfläche...) mit einer 4D Projektmethode im nicht-kontextuellen Modus verbinden. Der Link lautet /4DACTION/MyMethod/Param, wobei MyMethod der Name der auszuführenden 4D Projektmethode ist, wenn auf ein Link geklickt wird, Param ein optionaler Textparameter, der der Methode in $1 übergeben wird (siehe nachfolgenden Abschnitt "Textparameter für über URLs aufgerufene 4D Methoden").
Empfängt 4D die Anfrage /4DACTION/MyMethod/Param, wird sofern vorhanden die Datenbankmethode On Web Authentication aufgerufen. Gibt diese Wahr zurück, wird die Methode MyMethod mit dem optionalen String /Param als Parameter in $1 ausgeführt. Siehe dazu nachfolgenden Absatz "Textparameter für über URLs aufgerufene 4D Methoden".
4DACTION/ kann einer URL in einer statischen Web Seite zugewiesen werden. Die Syntax der URL muss lauten: <A HREF="/4DACTION/MyMethod/Param">Etwas ausführen</A>
Die Projektmethode MyMethod sollte in der Regel eine "Response" zurückgeben, z.B über SEND HTML FILE oder SENT HTML BLOB, etc. eine HTML Seite senden. Achten Sie auf eine möglichst kurze Ausführung, um den Browser nicht zu blockieren.
Hinweis: Eine über 4DACTION aufgerufene Methode darf keine Oberflächenelemente aufrufen (DIALOG, ALERT...).
Achtung: Damit eine 4D Methode mit der URL 4DACTION/ ausgeführt werden kann, muss die Option "Zugang per 4DACTION, 4DMETHOD und 4DSCRIPT" markiert sein. Sie ist im Dialogfenster Methodeneigenschaften enthalten und standardmäßig inaktiv. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.
Beispiel
Dieses Beispiel weist die URL 4DACTION/ einem HTML Bildobjekt zu, um auf der Seite ein Bild dynamisch anzuzeigen. Sie fügen in einer statischen Seite folgende Anweisungen ein:
<IMG SRC="/4DACTION/PICTFROMLIB/1000">
Die Methode PICTFROMLIB lautet:
C_TEXT($1) `Dieser Parameter muss immer deklariert werden C_PICTURE($PictVar) C_BLOB($BlobVar) C_LONGINT($Number) `Wir finden die Bildnummer wieder im String $1 $Number:=Num(Substring($1;2;99)) GET PICTURE FROM LIBRARY($Number;$PictVar) PICTURE TO GIF($PictVar;$BlobVar) SEND HTML BLOB ($BlobVar;"Pict/gif")
4DACTION in geposteten Formularen
Der 4D Web Server bietet eine weitere Möglichkeit, wenn Sie "gepostete" Formulare verwenden wollen. Das sind statische HTML-Seiten, die Daten an den Web Server senden. Sie müssen vom Typ POST sein, die Formularaktion muss zwingend mit /4DACTION/MethodName starten.
Hinweis: Ein Formular lässt sich über zwei Methoden übertragen, beide sind mit 4D verwendbar:
POST wird in der Regel verwendet, um im Web Server hinzugefügte Daten in der Datenbank hinzuzufügen.
GET wird in der Regel verwendet, um im Web Server Daten anzufordern, die aus einer Datenbank stammen.
Der Web Server ruft, wenn er ein "gepostetes" Formular erhält, die Projektmethode COMPILER_WEB auf, dann die Datenbankmethode On Web Authentication. Gibt sie Wahr zurück, wird die Methode MethodenName ausgeführt. 4D analysiert die im Formular vorhandenen HTML Felder, findet erneut ihre Werte und füllt die 4D Variablen automatisch mit deren Inhalt. Das Feld im Formular und die 4D Variable müssen beide denselben Namen haben.
Hinweis: Weitere Informationen dazu finden Sie im Abschnitt 4D Objekte mit HTML Objekten verbinden.
Die HTML Syntax für das Formular lautet:
Um die Aktion in einem Formular zu definieren:
<FORM ACTION="/4DACTION/MethodName" METHOD=POST>
um ein Feld in einem Formular zu definieren:
<INPUT TYPE=Field type NAME=Field name VALUE="Standardwert">
4D setzt für jedes Feld im Formular den Wert des Feldes auf den Wert der Variablen mit demselben Namen. Für Optionen im Formular, z.B. Kontrollkästchen, setzt 4th Dimension die zugeordnete Variable auf 1, wenn es gewählt wurde, sonst auf 0 (Null).
Für die Eingabe numerischer Daten konvertiert 4D den Wert des Feldes von Alpha > Zahl.
Hinweis: Hat ein Feld im Formular den Namen OK (z.B. die Schaltfläche Senden), wird die Systemvariable OK auf 1 gesetzt, wenn der Wert des Feldes nicht leer ist, sonst auf 0 (Null).
Beispiel
In einer im nicht-kontextuellen Modus gestarteten 4D Web Datenbank soll der Browser Datensätze über eine statische HTML Seite suchen können. Diese Seite lautet "Suche.htm". Die Datenbank enthält weitere statische Seiten, über welche Sie z.B. das Suchergebnis anzeigen können ("Ergebnis.htm"). Der Typ POST wurde sowohl der Seite als auch der Aktion /4DACTION/SUCHE zugewiesen.
Hier die Seite, wie sie in einem HTML Editor erscheint, in unserem Fall Dreamweaver:
Hier der HTML Code für diese Seite:
<form name="form1" id="form1" method="post" action="/4DACTION/SUCHE">
<p><font size="5"><strong>Willkommen bei unserem Web-Server</strong></font></p>
<p>Bitte geben Sie Ihren Namen ein unter dem Sie sich einloggen wollen:</p>
<p><strong><font size="3">Name</font></strong>:
<input name="VNAME" type="text" id="VNAME" />
<input type="submit" name="Submit" value="Zurücksetzen" />
<input type="submit" name="Submit2" value="Abschicken" />
</p>
</form>
Tippen Sie zur Dateneingabe im Dateneingabebereich "ABCD" ein, prüfen Sie die Option und bestätigen Sie, indem Sie auf die Schaltfläche Abschicken klicken.
4D ruft dann die Projektmethode COMPILER_WEB auf:
C_TEXT(VNAME) VNAME:="" C_LONGINT(vEXACT) vEXACT:=0 OK:=0 `Sonderfall
Im Beispiel enthält vNAME den String "ABCD", vEXACT ist gleich 1 und OK ist gleich 1 (da der Name der Schaltfläche OK ist).
4D ruft die Datenbankmethode On Web Authentication auf sofern vorhanden, dann wird die Projektmethode SUCHE aufgerufen. Sie lautet:
If (OK=1) If (vEXACT=0) `Wurde die Option nicht ausgewählt vNAME:=VNAME+"@" End if QUERY([Jockeys];[Jockeys]Name=vNAME) vLIST:=Char(1) `Gibt die Liste in HTML zurück FIRST RECORD([Jockeys]) While (Not(End selection([Jockeys]))) vLIST:=vLIST+[Jockeys]Name+" "+[Jockeys]Tel+"<BR>" NEXT RECORD([Jockeys]) End while SEND HTML FILE("Ergebnis.htm") `Sendet die Liste zum Formular Ergebnis.htm `welche eine Referenz auf die Variable vLIST enthält (das ist <!--4DVAR vLIST>) ... End if
URL 4DMETHOD/
Syntax: 4DMETHOD/MyMethod/Param
Modus: Kontextuell. Bei Aufrufen im nicht kontextuellen Modus wird in den kontextuellen Modus umgeschaltet.
Verwendung: URL oder "Form action".
Über diese URL können Sie ein HTML Objekt (Text, Schaltfläche...) mit einer 4D Projektmethode im kontextuellen Modus verbinden. Der Link lautet /4DMETHOD/Method_Name{/Param}. Method_Name ist der Name der auszuführenden 4D Projektmethode, wenn auf ein Link geklickt wird, Param ein optionaler Textparameter, der der Methode in $1 übergeben wird (siehe nachfolgenden Abschnitt "Textparameter für über URLs aufgerufene 4D Methoden"). Der verbundene Parameter durchläuft die Ausführung der 4D Projektmethode über deren URLs. Die Projektmethode kann selbst 4D Formulare, andere HTML Seiten, etc. anzeigen.
Empfängt 4D die Anfrage /4DACTION/MyMethod/Param, wird sofern vorhanden die Datenbankmethode On Web Authentication aufgerufen. Gibt diese Wahr zurück, wird die Methode MyMethod mit dem optionalen String /Param als Parameter in $1 ausgeführt.
Achtung: Damit eine 4D Methode mit der URL 4DACTION/ ausgeführt werden kann, muss die Option "Zugang per 4DACTION, 4DMETHOD und 4DSCRIPT" markiert sein. Diese Option ist im Dialogfenster Methodeneigenschaften enthalten und standardmäßig inaktiv. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.
URL 4DCGI/<action>
Syntax: 4DCGI/<action>
Modus: Beide
Verwendung: URL
Empfängt der 4D Web Server die URL /4DCGI/<action>, ruft dieser die Datenbankmethode On Web Connection auf durch Senden der URL an $1, und zwar unverändert.
Die URL 4DCGI/ entspricht keiner Datei. Ihre Aufgabe ist, 4D aufzurufen. Der Parameter "<action>" kann Information jeglicher Art enthalten.
Mit dieser URL können Sie eine beliebige Aktion durchführen. Sie müssen lediglich den Wert von $1 in der Datenbankmethode On Web Connection oder in einer ihrer Untermethoden prüfen und 4D die entsprechende Aktion ausführen lassen. Sie können z.B. eigene statische HTML Seiten einrichten, um Datensätze hinzuzufügen, zu suchen oder zu sortieren bzw. GIF Bilder on-the-fly erstellen. Anwendungsbeispiele zu URL finden Sie unter den Befehlen PICTURE TO GIF und SEND HTTP REDIRECT.
Am Ende einer Aktion muss über Befehle, die Daten senden, eine Antwort zurückgegeben werden (SEND HTML FILE, SEND HTML BLOB, etc.).
Hinweis: Achten Sie darauf, dass die kürzest mögliche Aktion ausgeführt wird, um den Browser nicht unnötig warten zu lassen.
Textparameter für über URLs aufgerufene 4D Methoden
4D sendet zu jeder 4D Methode, die über URLs aufgerufen wird, einen Textparameter. Dabei gilt folgendes:
Auch wenn Sie diesen Parameter nicht verwenden, müssen Sie ihn explizit angeben, und zwar mit der Zeile C_TEXT($1). Denn sonst treten Runtime Fehler auf, wenn Sie über das Web auf eine kompilierte Datenbank zugreifen.
Der Parameter $1 gibt die Extradaten am Ende der URL zurück. Sie können ihn als Platzhalter zum Übergeben von Werten aus der HTML Umgebung in die 4D Umgebung einsetzen.
Runtime Fehler im kompilierten Modus
Nehmen wir folgendes Beispiel: Sie führen eine Methode aus, die per Link an ein HTML Objekt gebunden ist. Ihr Bildschirm im Web Browser sieht folgendermaßen aus:
Dieser Runtime Fehler tritt auf, da der Textparameter $1 nicht in der 4D Methode angegeben ist, die beim Anklicken des dazugehörigen HTML Links aufgerufen wird. Da der Kontext für die Ausführung die aktuelle HTML Seite ist, bezieht sich der Fehler auf die "Zeile 0" der Methode, die gerade die Seite an den Web Browser gesendet hat.
Im Beispiel aus dem Abschnitt Web Server, Einstieg beheben Sie das Problem durch explizites Angeben des Textparameters $1 innerhalb der Methoden M_ADD_RECORDS und M_LIST_RECORDS:
` Projektmethode M_ADD_RECORDS C_TEXT($1) ` Dieser Parameter MUSS explizit angegeben werden Repeat ADD RECORD([Customers]) Until(OK=0) ` Projektmethode M_LIST_RECORDS C_TEXT($1) ` Dieser Parameter MUSS explizit angegeben werden ALL RECORDS([Customers]) MODIFY SELECTION([Customers])
Nach diesen Änderungen treten kompilierte Runtime Fehler nicht mehr auf.
Explizit anzugebende Parameter in der aufgerufenen 4D Methode
Je nach Art und Ursprung des Aufrufs einer Methode müssen Sie bestimmte Parameter angeben.
Datenbankmethode On Web Authentication und Datenbankmethode On Web Connection.
Sie müssen die sechs Parameter der Verbindung angeben:
` Datenbankmethode On Web Connection C_TEXT($1;$2;$3;$4;$5;$6)
Über die URL 4DMETHOD/ aufgerufene Methode
Sie müssen den Parameter $1 angeben:
` Über URL 4DMETHOD/ aufgerufene Methode C_TEXT($1)
Über 4DACTION/ als URL aufgerufene Methode
Sie müssen den Parameter $1 angeben:
` Über URL 4DACTION/ aufgerufene Methode C_TEXT($1)
Über 4DSCRIPT/ als HTML Kommentar in einem Dokument aufgerufene Methode
Die Methode sollte in $0 einen Wert zurückgeben. Sie müssen den Parameter $0 und $1 angeben:
` Über 4DSCRIPT/ als HTML Kommentar aufgerufene Methode C_TEXT($0; $1)
Referenz
4D Objekte mit HTML Objekten verbinden, GET WEB FORM VARIABLES, Kontextueller Modus, Web Server, Einstieg.