[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 メーリングリストの案内