On Web Connection データベースメソッド

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 2004 (Modified)


On Web Connection データベースメソッドは3つの異なるケースで呼び出されます:

・Webサーバが 4DCGI から始まるURLを受信した。

・Webサーバが無効なリクエストを受信した。

・Webブラウザがコンテキストモードでのデータベースへの接続を開始しようとするたび、またはコンテキストの作成を必要とするリクエストをWebサーバが受け取るたびに、4D (ローカルモード) や 4D Server によって呼び出されます (このケースは、コンテキストモードをサポートしないリモートモードの4Dには当てはまりません)。

詳細な情報は、後述の“On Web Connection データベースメソッド呼び出し” の段落を参照してください。

データベースがWebサーバとして公開され、リクエストは事前にOn Web Authentication データベースメソッド で受け入れられていなければなりません(存在する場合)。

On Web Connection データベースメソッドは6つのテキスト引数を受け取ります。これらの引数の内容は以下のとおりです:

引数説明
$1テキストURL
$2テキストHTTPヘッダ + HTTPボディ (32 KBまで)
$3テキストWebクライアント (ブラウザ) のIPアドレス
$4テキストサーバのIPアドレス
$5テキストユーザ名
$6テキストパスワード

これらの引数を以下のように宣言しなければなりません:

      ` On Web Connection データベースメソッド

   C_TEXT($1;$2;$3;$4;$5;$6)

      ` メソッドコード

URL

最初の引数 ($1) はユーザがWebブラウザのアドレスエリアに入力したURL (からホストのアドレスを取り除いたもの) です。

イントラネット接続の場合をみてみましょう。4D WebサーバのIPアドレスを123.4.567.89とします。以下の表はWebブラウザに入力されたURLにより、$1が受け取る値を示しています:

Webブラウザのアドレスに入力された値$1の値
123.4.567.89/
http://123.4.567.89/
123.4.567.89/Customers/Customers
http://123.4.567.89/Customers/Customers
http://123.4.567.89/Customers/Add/Customers/Add
123.4.567.89/Do_This/If_OK/Do_That/Do_This/If_OK/Do_That

この引数は必要に応じて自由に利用できます。4Dは単にURLのホスト部より後の部分を無視します。

例えば値 "/Customers/Add" が “直接新規レコードを[Customers] テーブルに追加する”ということを意味するというような、オリジナルのルールを作成できます。Webユーザにデータベースを公開し、利用可能な値やブックマークを提供できます。アプリケーションの異なる部分へのショートカットを提供できます。このようにして、Webユーザはデータベースに接続するたびにナビゲーションを通過することなく、素早くWebサイトのリソースにアクセスできます。

警告: 以前のセッションで作成したブックマークでデータベースに再接続することを防ぐため、4Dは標準の4D URLに対応するURLを傍受します。

・HTTPリクエストのヘッダとボディ

2番目の引数 ($2) はWebブラウザから送信されたHTTPリクエストのヘッダとボディです。この情報はOn Web Authenticationデータベースメソッドにそのまま渡されることに留意してください。その内容は接続を試みたWebブラウザの仕様により異なります。

Mac OS上のNetscape 4.5では、以下のようなヘッダを受け取るでしょう:

GET / HTTP/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.5 (Macintosh; I; PPC)

Host: 123.45.67.89

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

Accept-Encoding: gzip

Accept-Language: us

Accept-Charset: iso-8

Windows上のMicrosoft Internet Explorer 6では、以下のようなヘッダを受け取るでしょう:

GET / HTTP/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Host: 123.45.67.89

Accept: image/gif, image/x-xbitmap, image/pjpeg, */*

Accept-Language: us

アプリケーションでこの情報を使用するには、開発者がヘッダとボディを解析しなければなりません。

WebクライアントのIPアドレス

$3 引数はブラウザマシンのIPアドレスを受け取ります。この情報を使用して、イントラネットアクセスとインターネットアクセスを区別できます。

サーバIPアドレス

$4 引数はWebサーバを呼び出すために使用されたIPアドレスを受け取ります。4Dバージョン6.5以降マルチホーミングがサポートされ、複数のIPアドレスを持つマシンで使用できるようになりました。詳細はWeb サーバ設定の節を参照してください。

ユーザ名とパスワード

$5 と $6 引数は、ブラウザが表示する標準の認証ダイアログにユーザが入力したユーザ名とパスワードを受け取ります。このダイアログは環境設定でパスワード管理オプションが指定されていると、接続のたびに表示されます (接続セキュリティの節参照)。

Note: ブラウザから送信されたユーザ名が4Dに存在する場合、$6 引数 (ユーザパスワード) はセキュリティのため渡されません。

On Web Connection データベースメソッドの呼び出し


On Web Connection データベースメソッド4DCGI URLまたはカスタマイズされたコマンドURLを使用して、4D Webサーバへのエントリポイントとして使用できます。またコンテキストモードへのエントリポイントとしての役割もあります (4Dローカルモードと4D Server)。

警告: インタフェース要素を表示する4D コマンド (ALERT, DIALOG...) を呼び出すと、メソッド処理が終了します。

On Web connection データベースメソッドは以下のケースで呼び出されます:

・ブラウザが、コンテキストモードで操作する4D Webサーバに接続するとき。データベースメソッドは /<action>... URLで呼び出されます。

・4Dが /4DMETHOD URLを受け取ったとき。Webサーバはコンテキストモードにスイッチし、$1/4DMETHOD/MethodNameが渡されて、データベースメソッドが呼び出されます。

・4Dが /4DCGI URLを受け取ったとき。$1/4DCGI/<action> が渡されて、データベースメソッドが呼び出されます。

<path>/<file>タイプのURLで存在しないWebページが呼び出されたとき。データベースメソッドにそのURLが渡されて呼び出されます (*)。

<file>/ タイプのURLでWebページが呼び出され、デフォルトのホームページが設定されていないとき。データベースメソッドにそのURLが渡されて呼び出されます (*)。

On Web Connection データベースメソッドがコンテキストモードまたは非コンテキストモードどちらから呼び出されたかを知るには、Web Context コマンドを使用します。このコマンドはコンテキストモードでは True を、そうでなければ False が返されます。

On Web Connection データベースメソッド を以下の構造で記述することをお勧めします:

      `On Web connection データベースメソッド
   C_TEXT($1;$2;$3;$4;$5;$6)
   If (Web Context) `コンキストモードの場合
      WithContext ($1;$2;$3;$4;$5;$6)
         `WithContext には4D 6.0.xの
         `On Web connection データベースメソッドが記述されいる
   Else
      NoContext ($1;$2;$3;$4;$5;$6)
         `NoContext メソッドは非コンキストモードの処理を
         `行います
   End if

例題: コンテキストモードでクライアントのローカルホームページを実装する

以下の例題では、On Web Connection データベースメソッドに送信される引数 $1は、組織の中でクライアントホームページを実装するために使用されます。イントラネットサーバはコンテキストモードで動作します。

データベースに2つのテーブル[Customers][Tables]があります。On Startup データベースメソッドで、後ほどOn Web Connection データベースメソッドで使用されるインタープロセス配列を初期化します。

      ` On Startup データベースメソッド

      ` ーブルリスト
   ARRAY STRING(31;<>asTables;Get last table number)
   For ($vlTable;1;Size of array(<>asTables);1;-1)
      If(Is table number valid($vlTable))
         <>asTables{$vlTable}:=Table name($vlTable)
      Else
         DELETE FROM ARRAY(<>asTables;$vlTable)
      End if
   End for 

      ` ログイン時の標準Webアクション
   ARRAY STRING(31;<>asActions;2)
   <>asActions{1}:="Add"
   <>asActions{2}:="List"

On Web Connection データベースメソッドの主な役割は、URL中でホスト部の後に渡された追加のデータを解読し、それに基づき正しい動作を行うことです。メソッドは以下のようになります:

      ` On Web Connection データベースメソッド

   C_TEXT($1;$2;$3;$4;$5;$6)
   C_TEXT($vtURL)

   If (Web context) `コンキストモードなら
         ` 念のため、$1が "/" または "/..."かチェックする
      If ($1="/@")
            ` URLから先頭の"/"を取り除いローカル変数にコピーする 
         $vtURL:=Substring($1;2)
            ` URLを解析し、URLトークンをローカル配列にコピー
            ` 例えばURLの追加データが"aaa/bbb/ccc"である時、結果配列は
            ` 3要素 "aaa", "bbb" , "ccc" で構成されます。
         $vlElem:=0
         ARRAY TEXT($atTokens;$vlElem)
         While ($vtURL # "")
            $vlElem:=$vlElem+1
            INSERT IN ARRAY($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 
            ` URLのホスト部の後に追加データが渡されいる場合 
         If ($vlElem>0)
               ` On Startupで初期化したインタープロセス配列を使用し、
               ` 最初のトークンがーブル名か確認
            $vlTableNumber:=Find in array(<>asTables;$atTokens{1})
            If ($vlTableNumber>0)
                  ` ーブル名ならポインタを取得
               $vpTable:=Table($vlTableNumber)
                  ` 入出力フォームを設定
               INPUT FORM($vpTable->;"Input Web")
               OUTPUT FORM($vpTable->;"Output Web")
                  ` On Startupで初期化したインタープロセス配列を使用し、
                  ` 2番目のトークンが標準アクションかチェック
               $vlAction:=Find in array(<>asActions;$atTokens{2})
               Case of 
                     ` レコード追加
                  : ($vlAction=1)
                     Repeat 
                        ADD RECORD($vpTable->;*)
                     Until (OK=0)
                     ` レコード一覧  
                  : ($vlAction=2)
                     READ ONLY($vpTable->)
                     ALL RECORDS($vpTable->)
                     DISPLAY SELECTION($vpTable->;*)
                     READ WRITE($vpTable->)
                  Else 
                     ` ここに追加の標準ーブルアクションを実装できる
               End case 
            Else 
               ` ここに他の標準アクションを実装できる
            End if 
         End if 
      End if 
         ` 上記で起こったことにかかわらず、通常のログオンプロセスを追跡する
      WWW NORMAL LOG ON 
   Else
      ...  ` ここに非コンキストモードをコントロールするコードを記述する 
   End if

ここで、組織内の人はデータベースに接続して、許可されたルールに基づくURLを入力できます。ユーザはまたブックマークを作成することもできます。実際、根本的なソリューションは組織のメンバーそれぞれにHTMLページを提供し、ローカルにデータベースアクセスできるようにすることです。このHTMLページは以下のようなものです:

言い換えれば、HTMLページ ACME_IS.HTM は、4Dベースの情報システムのためのクライアントのローカルホームページです。ユーザがAdd New Productsリンクをクリックすると、WebブラウザはURL http://123.4.567.89/Products/Addをもつホストに接続します。データベースコンピュータのIPアドレスが123.4.567.89に設定してあれば、On Web Connection データベースメソッド は追加のURLデータ "/Products/Add"$1に受け取ります。そして[Products] テーブルへのレコード追加が処理されます。

最後に、ユーザはページからリンクをデスクトップにドラッグ&ドロップして、Add New Customersなどのインターネットショートカットアイコンを作成できます。これらのアイコンをダブルクリックすると、4D Webデータベースの特定の場所に直接接続できます。

HTMLのソースコードは以下のとおりです:

参照

On Web Authentication データベースメソッド, URLとフォームアクション, コンテキストモードの利用, データベースメソッド.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次