2006年7月10日

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

藤本と申します。

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を呼び出すタグを記述します。
 このとき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 mailing list PHP-users@xxxxx
http://ns1.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://www.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2006年7月10日 16:14
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39292
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。