Datenbankmethode On Web Connection

4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

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 4th Dimension 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 Client, welcher 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:

ParameterTypBeschreibung
$1TextURL
$2TextHTTP Kopfteil + HTTP Hauptteil (max. 32 Kb)
$3TextIP Adresse des Web Client (Browser)
$4TextIP Adresse des Server
$5TextBenutzername
$6TextKennwort

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 BrowsersWert 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 diesen 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 Windows NT könnte der Kopfteil folgendermaßen aussehen:

GET HTTP/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.5 (WinNT; 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 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 wird aufgerufen, wenn sich ein Browser an die Datenbank anmeldet. Diese Methode spielt aber auch eine Rolle als Einstiegspunkt (entry point) in 4D über die spezielle URL /4DCGI/... oder angepasste URL Befehle sowie als Einstiegspunkt im kontextuellen Modus.

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 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 Interprozessarrays, 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 schliesslich 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.


4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next