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とフォームアクション, コンテキストモードの利用, データベースメソッド.