Version 2004 (Geändert)
Die Datenbankmethode On Web Connection wird in folgenden drei Fällen aufgerufen:
Der Web Server empfängt eine Anfrage, die mit der URL 4DCGI beginnt.
Der Web Server empfängt eine ungültige Anfrage
Durch 4D im lokalen Modus oder 4D Server, immer wenn ein Web Browser eine Verbindung zur Datenbank im kontextuellen Modus herstellt oder wenn der Web Server eine Anfrage erhält, die das Erstellen eines Kontexts erfordert (Das gilt nicht für 4D im remote Modus, da er den kontextuellen Modus nicht unterstützt).
Die Anfrage sollte zuvor von der Datenbankmethode On Web Authentication sofern vorhanden angenommen worden sein. Die Datenbank sollte als Web Server veröffentlicht werden.
Die Datenbankmethode On Web Connection erhält sechs Textparameter:
Parameter | Typ | Beschreibung |
$1 | Text | URL |
$2 | Text | HTTP Kopfteil + HTTP Hauptteil (max. 32 Kb) |
$3 | Text | IP Adresse des Web Client (Browser) |
$4 | Text | IP Adresse des Server |
$5 | Text | Benutzername |
$6 | Text | Kennwort |
Sie müssen diese Parameter folgendermaßen deklarieren:
` Datenbankmethode On Web Connection C_TEXT($1;$2;$3;$4;$5;$6) ` Code für die Methode
URL Extra Daten
Der erste Parameter ($1) ist die URL, welche der Benutzer im Bereich Location seines Web Browsers eingibt, nachdem die Host-Adresse entfernt wurde.
Nehmen wir als Beispiel eine Intranet Verbindung. Die IP Addresse Ihres 4D Web Server Rechners ist 123.4.567.89. Nachfolgende Tabelle zeigt die Werte von $1 abhängig von den im Web Browser eingegebenen URL:
URL im Bereich Location des Web Browsers | Wert des Parameters $1 |
123.4.567.89 | / |
http://123.4.567.89 | / |
123.4.567.89/Kunden | /Kunden |
http://123.4.567.89/Kunden | /Kunden |
http://123.4.567.89/Kunden/Hinzufügen | /Kunden/Hinzufügen |
123.4.567.89/Aktion1/Wenn_OK/Aktion2 | /Aktion1/Wenn_OK/Aktion2 |
Sie können diese Parameter nach Belieben nutzen. 4D berücksichtigt nicht den Wert, der nach dem Host-Teil der URL steht.
Sie können zum Beispiel eine Konvention festlegen, nach der der Wert "/Kunden/Hinzufügen" bedeutet "gehe direkt zu der Aktion Neuen Datensatz in der Tabelle [Customers] hinzufügen." Wenn Sie den Web Benutzern Ihrer Datenbank eine Liste der möglichen Werte und/oder Standard-Bookmarks zur Verfügung stellen, können Sie auch Tastaturkürzel für die verschiedenen Teile Ihrer Anwendung einrichten. So können Web Benutzer schnell auf die Ressourcen im Web zugreifen und müssen nicht bei jedem Verbindungsaufbau erneut den gesamten Navigationspfad durchlaufen.
Warnung: Um zu verhindern, dass ein Benutzer mit einem bei einer früheren Sitzung erstellten Bookmark erneut in die Datenbank gelangt, fängt 4D jede URL ab, die zu den Standard URLs von 4D gehört.
Kopfteil der HTTP Anfrage gefolgt vom HTTP Hauptteil
Der zweite Parameter ($2) ist der Kopfteil der HTTP Anfrage, die der Web Browser sendet. Beachten Sie, dass dieser Kopfteil komplett in Ihre Datenbankmethode On Web Connection übernommen wird. Sein Inhalt variiert je nach Art des Web Browsers, der versucht, die Verbindung aufzubauen.
Mit Netscape 4.5 auf Mac OS könnte der Kopfteil folgendermaßen aussehen:
GET HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.5 (Macintosh; I; PPC)
Host: 192.9.200.11
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Encoding: gzip
Accept-Language: us
Accept-Charset: iso-8
Mit Microsoft Internet Explorer 6 auf Windows könnte der Kopfteil folgendermaßen aussehen:
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 192.9.200.11
Accept: image/gif, image/x-xbitmap, image/jpeg, */*
Accept-Language: us
Enthält Ihre Anwendung diese Information, können Sie selbst wählen, ob Sie den Kopfteil und den Hauptteil durchlaufen.
IP Adresse des Web Client
Der Parameter $3 empfängt die IP Adresse des Browser Rechners. Mit dieser Information können Sie zwischen Intranet und Internet Verbindungen unterscheiden.
IP Adresse des Server
Der Parameter $4 empfängt die IP Adresse, an welche die HTTP Anfrage gesendet wurde. 4D ermöglicht 4D Multi-homing, d.h. den Einsatz von Rechnern mit mehr als einer IP Adresse. Weitere Informationen dazu finden Sie im Abschnitt Einstellungen des Web Server.
Benutzername und Kennwort
Die Parameter $5 und $6 empfangen Benutzernamen und Kennwort, die der Benutzer im vom Browser angezeigten Dialogfenster Standardidentifikation eingibt. Dieses Dialogfenster erscheint für jede Verbindung, wenn im Dialogfenster Einstellungen der Datenbank die Option Benutze Kennwort ausgewählt wurde. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.
Hinweis: Gibt es den vom Browser gesendeten Benutzernamen in 4D, wird der Parameter $6 (Benutzerkennwort) aus Sicherheitsgründen nicht zurückgegeben.
Datenbankmethode On Web Connection aufrufen
Die Datenbankmethode On Web Connection lässt sich als Einstiegspunkt für den 4D Web Server verwenden, entweder über die spezielle URL /4DCGI/... oder angepasste URL Befehle. Diese Methode spielt aber auch eine Rolle als Einstiegspunkt (entry point) im kontextuellen Modus
(mit 4D im lokalen Modus und mit 4D Server).
Warnung: Wird ein 4D Befehl aufgerufen, der ein Element der Oberfläche anzeigt (ALERT, DIALOG...), beendet das den Prozess.
Die Datenbankmethode On Web Connection wird in folgenden Fällen aufgerufen:
Wenn ein Browser auf den 4D Web Server zugreift, der im kontextuellen Modus arbeitet. Die Datenbankmethode wird mit der URL /<action>... aufgerufen.
Wenn 4D die URL 4DMETHOD empfängt. Der Web Server wechselt in den kontextuellen Modus. Die Datenbankmethode wird in $1 mit der URL /4DMETHOD/MethodName aufgerufen.
Wenn 4D die URL /4DCGI empfängt. /<action> aufgerufen wird. Die Datenbankmethode wird in $1 mit der URL /4DCGI/<action> aufgerufen.
Wenn eine Web Seite aufgerufen wird und keine URL vom Typ <path>/<file> gefunden wird. Die Datenbankmethode wird mit der URL (*) aufgerufen.
Wenn eine Web Seite mit einer URL vom Typ <file>/ aufgerufen wird und standardmäßig keine Home Page definiert wurde. Die Datenbankmethode wird mit der URL (*) aufgerufen.
(*) In diesem Sonderfall startet die in $1 empfangene URL NICHT mit dem Zeichen "/".
Mit der Funktion Web Context können Sie herausfinden, ob die Datenbankmethode On Web Connection über eine kontextuelle oder nicht-kontextuelle Verbindung aufgerufen wurde. Sie gibt True für kontextuell und False für nicht-kontextuell zurück.
Wir empfehlen, die Datenbankmethode On Web Connection folgendermaßen zu strukturieren:
`Datenbankmethode On Web connection C_TEXT($1;$2;$3;$4;$5;$6) If (Web Context) `Wenn im kontextuellen Modus WithContext ($1;$2;$3;$4;$5;$6) `WithContext enthält alles, was in 4D in der Datenbankmethode `On Web connection in 4D 6.0.x enthalten war Else NoContext ($1;$2;$3;$4;$5;$6) `Die Methode NoContext führt das nicht-kontextuelle `Bearbeiten von Suchen durch (generell kurz) End if
Beispiel: Lokale Client Home Pages im kontextuellen Modus einfügen
Im folgenden Beispiel werden mit dem Parameter $1, der an die Datenbankmethode On Web Connection gesendet wird, Client Home Pages innerhalb einer Organisation eingefügt. Die Intranet Server operieren im kontextuellen Modus.
Die Datenbank hat zwei Tabellen: [Customers] und [Tables]. Nachfolgende Datenbankmethode On Startup initialisiert Interprozess-Arrays, die später von der Datenbankmethode On Web Connection verwendet werden.
` Datenbankmethode On Startup ` Table List ARRAY STRING(31;<>asTables;Count tables) For ($vlTable;1;Size of array(<>asTables)) <>asTables{$vlTable}:=Table name($vlTable) End for ` Standard Web Aktionen beim Einloggen ARRAY STRING(31;<>asActions;2) <>asActions{1}:="HInzufügen" <>asActions{2}:="Auflisten"
Hauptaufgabe der Datenbankmethode On Web Connection ist es, die Daten zu entziffern, die in der URL nach dem Host-Teil der Adresse zusätzlich eingetragen wurden und dann entsprechend zu agieren:
` Datenbankmethode On Web Connection C_TEXT($1;$2) C_TEXT($vtURL) If (Web context) ` Sind wir im kontextuellen Modus ` Prüfe für alle Fälle, ob $1 gleich "/" oder "/... ist" If ($1="/@") ` Kopiere URL in eine lokale Variable minus dem ersten "/" $vtURL:=Substring($1;2) ` Analysiere die URL und fülle lokales Array mit den Tokens der URL ` Sind die Extradaten in der URL "aaa/bbb/ccc", hat das resultierende Array ` die drei Elemente "aaa", "bbb" und "ccc" in dieser Reihenfolge $vlElem:=0 ARRAY TEXT($atTokens;$vlElem) While ($vtURL # "") $vlElem:=$vlElem+1 INSERT ELEMENT($atTokens;$vlElem) $vlPos:=Position("/";$vtURL) If ($vlPos>0) $atTokens{$vlElem}:=Substring($vtURL;1;$vlPos-1) $vtURL:=Substring($vtURL;$vlPos+1) Else $atTokens{$vlElem}:=$vtURL $vtURL:="" End if End while ` Wurden die Extradaten nach dem HOST Teil der URL übergeben If ($vlElem>0) ` Prüfe über das in der DB Methode On Startup initializierte Interprozessarray ` Ob das 1. Token ein Tabellenname ist $vlTableNumber:=Find in array(<>asTables;$atTokens{1}) If ($vlTableNumber>0) ` Wenn ja, setze Zeiger auf diese Tabelle $vpTable:=Table($vlTableNumber) ` Setze die Eingabe- und Ausgabeformulare INPUT FORM($vpTable->;"Input Web") OUTPUT FORM($vpTable->;"Output Web") ` Prüfe über das in der DB Methode On Startup initializierte Interprozessarray ` Ob das 2. Token eine bekannte Standardaktion ist. $vlAction:=Find in array(<>asActions;$atTokens{2}) Case of ` Datensätze hinzufügen : ($vlAction=1) Repeat ADD RECORD($vpTable->;*) Until (OK=0) ` Datensätze auflisten : ($vlAction=2) READ ONLY($vpTable->) ALL RECORDS($vpTable->) DISPLAY SELECTION($vpTable->;*) READ WRITE($vpTable->) Else ` Hier können weitere Standardaktionen für Tabellen eingesetzt werden End case Else ` Hier können andere Standardaktionen eingesetzt werden End if End if End if ` Unabhängig vom obigen Ablauf, fahren Sie fort mit dem normalen Log On Prozeß WWW NORMAL LOG ON
An dieser Stelle können sich Personen innerhalb der Organisation an die Datenbank anmelden und eine URL gemäss der festgelegten Konvention eingeben. Benutzer können auch Bookmarks anlegen, wenn sie die URL nicht jedesmal neu eingeben wollen. In der Tat ist die beste Lösung, jedes Mitglied der Organisation mit einer HTML Seite auszustatten, die sie lokal nutzen, um auf die Datenbank zuzugreifen. Sie könnte beispielsweise so aussehen:
Anders gesagt, die HTML Seite ACME_IS.HTM ist die lokale Client Home Page für das auf 4D basierende Informationssystem der Organisation. Klickt ein Benutzer auf das Link Add New Products, baut der Web Browser die Verbindung zum Host über die URL http://123.4.567.89/Products/Add auf. Unter der Voraussetzung, dass die IP Adresse des Rechners mit der Datenbank 123.4.567.89 ist, erhält die Datenbankmethode On Web Connection die zusätzlichen URL Daten "/Products/Add" in $1, und beginnt somit, Datensätze in der Tabelle [Products] hinzuzufügen.
Benutzer können schließlich auch per Drag & Drop Links von dieser Seite auf den Desktop ziehen, um Icons für Tastenkürzel im Internet zu erstellen, wie z.B. das Icon Add New Customers. Durch einfachen Doppelklick auf das Icon gelangen sie direkt in jeden Bereich ihrer 4D Web Datenbank.
Der Quellcode dieser HTML Seite lautet:
Referenz
Datenbankmethode On Web Authentication, Datenbankmethoden, Kontextueller Modus, URLs und Form Actions.