[PHP-users 29689] PHPからActiveXコントロールにスムーズにデータを渡す方法

satoshi@try-square.co.jp satoshi @ try-square.co.jp
2006年 7月 10日 (月) 16:14:36 JST


藤本と申します。

ActiveXには不慣れなもので、PHPからActiveXコントロールへのデータ渡し
について、もっといい方法はないものかと悩んでいます。
長文すみません。

使用環境は下記です。
Linux-2.4
Apache-1.3.36
PHP-4.4.2 + expat + Sablotron
PostgreSQL-7.4.13

処理とデータの図式は、次のようになります。

   1) HTMLフォーム
     ↓                (a) フォーム値入力
   2) PHPスクリプトA
     ↓                (b) XMLデータ保存
   3) HTMLページ
     ↓                (c) ユニークID埋め込み
   4) ActiveXコントロールA
     ↓                (d) ユニークID送信
   5) PHPスクリプトB
     ↓                (e) XMLデータ返信
   6) ActiveXコントロールA

1) まず、ある情報をHTMLフォームからユーザに入力してもらいます。(a)
2) 次に、PHPスクリプトAの処理にて、その情報をもとにXMLデータを
 生成します。(b)
 このときランダム生成した文字列をユニークIDとしてひもづけ、
 XMLとセットでサーバ上にファイル保存しておきます。
 (例えばファイル名をユニークIDにする)
3) 出力するHTMLには、ActiveXを呼び出す<object>タグを記述します。
 このときPARAMとしてユニークIDを記述します。(c)
4) ActiveXコントロール内部の処理で同サーバに再びHTTP接続を行い、
 ユニークIDを渡します。(d)
5) PHPスクリプトBにて、サーバ上に確かに存在するユニークIDであれば、
 XMLデータを返してやります。(e)

▼本題

 上記で、(b)と(e)は同じデータです。
 ユニークIDを使った、独自セッションのような工夫をしていますが、
 直接ActiveXコントロールにXMLデータを引き継げないものでしょうか。

 もちろん、HTMLフォーム、PHPスクリプト、ActiveXコントロールは全て
 自己開発なので、どれに手を加えることも可能です。

▼その他の状況

・フォーム値はいくつかの項目からなります。将来変わる可能性もあります。

・XMLの生成は、DBMSへの問い合わせも必要なため、サーバ上でしか行えない
 ステップです。

・XMLは数バイト〜数メガバイトです。PARAMに埋め込むにはちょっと大。

・ActiveXコントロールは、自己署名でインストールさせる予定です。
 PHPスクリプトAの処理時に、インストール済みである保証はありません。

・想定ユーザは、ブラウザスキルのみの、インターネット上の「特定」多数
 ですが、直接サポートは行き渡りません。

▼検討したこと

・ActiveXコントロールでフォームから最後まで全部作っちゃう手があります
 が、フォームやページのメンテナンス性が悪くなり、下手をすると
 ユーザビリティもかえって低下します。
 それにActiveXが肥大化するのは個人的に嫌。

・PHPスクリプトとActiveXコントロールの間でCOM通信できるか、とまず
 考えましたが、無理ですよね。
 ActiveXがインストールされるまでPHP処理をブロックする方法が無い。
 それに、ActiveXとPHPは独立なので、どのみちユニークIDが必要な予感。

・生成されたXMLはセキュリティ保護対象です。
 そういえば、ActiveXの起動がブロックされた場合など、一定時間アクセス
 されなかったXMLデータは、自動的に削除しなければいけません。
 (いま気付いた)
 この処理を加えることも、なんだか美しくないですね。

薄々、まあこれがマシな方法なんだろうなという気がしますが、それなら
それと安心したく、1日頭を抱えています。
ハゲそうです。お助けください。



PHP-users メーリングリストの案内