cvs: phpdoc /ja/faq com.xml html.xml

From: Date: Sat, 17 Nov 2001 23:52:09 +0000
Subject: cvs: phpdoc /ja/faq com.xml html.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969338958@lists.php.net to get a copy of this message
hirokawa Sat Nov 17 18:52:09 2001 EDT Added files: /phpdoc/ja/faq com.xml html.xml Log: added com.xml html.xml in japanese manual.

Index: phpdoc/ja/faq/com.xml +++ phpdoc/ja/faq/com.xml <?xml encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <chapter id="faq.com"> <title>PHPとCOM</title> <titleabbrev>PHPとCOM</titleabbrev> <para> PHPはWin32プラットフォーム上でCOMとDCOMオブジェクトにアクセスすることがで きます。 </para> <qandaset> <qandaentry id="faq.com.q1"> <question> <para> とある計算を行うDLLを作成しました。これをPHPで実行させる方法はあ りますか? </para> </question> <answer> <para> もしそれが普通のDLLなら、現在のところPHPからそれを実行する手段は ありません。DLLがCOMサーバを含んでいてIDispatchインターフェース が実装されている場合、PHPからアクセスすることができます。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q2"> <question> <para> 'Unsupported variant type: xxxx (0xxxxx)'とはどういう意味ですか? </para> </question> <answer> <para> 多くのVARIANTタイプとその組み合わせがあり、そのほとんどはサポー トされていますが、残りのいくつかは未だ実装されていません。また配 列も完全にサポートされているわけではなく、PHPとCOMの間で受け渡し が可能なのは1次元の添字付配列のみです。もしこの他にサポートされ ていないタイプを見つけた場合は(既知でなければ)、できる限りの情報 を添えてバグとして報告して下さい。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q3"> <question> <para>PHPでビジュアルオブジェクトを操作できますか?</para> </question> <answer> <para> 基本的には可能です。しかしPHPはほとんどの場合ウェブスクリプティ ングの言語として使用されウェブサーバ上で実行されるため、ビジュア ルオブジェクトがサーバのデスクトップに現れることはありません。も しPHPをアプリケーション作成に使用する、すなわちPHP-GTKと合わせて 使用する場合にはアクセスに制限はありません。COMを通じてビジュア ルオブジェクトを操作することができます。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q4"> <question> <para>COMオブジェクトをセッション情報として保存できますか?</para> </question> <answer> <para> できません。COMインスタンスはリソースとして扱われるため、1つのス クリプトを実行している間のみ使用可能です。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q5"> <question> <para>COMの出力するエラーをトラップできますか?</para> </question> <answer> <para> 現在の所、PHPが提供する方法(@, track_errors, ...)を使用してCOMの エラーをトラップすることはできません。しかし、私たちはこれを実装 する方法を検討中です。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q6"> <question> <para> PHPスクリプトからDLLを作成することはできますか?Perlではできるの ですが。 </para> </question> <answer> <para> いいえ、残念ながらPHPにはそのようなツールはありません。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q7"> <question> <para> 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'とはどういう意味ですか? </para> </question> <answer> <para> このエラーが発生する理由はいくつかあります: <itemizedlist> <listitem> <simpara> CLSIDが正しくない </simpara> </listitem> <listitem> <simpara> 要求されたDLLが無い </simpara> </listitem> <listitem> <simpara> 要求されたコンポーネントがIDispatchインターフェースを実装していない </simpara> </listitem> </itemizedlist> </para> </answer> </qandaentry> <qandaentry id="faq.com.q8"> <question> <para> COMオブジェクトをリモートサーバから実行するにはどうすればよいで すか? </para> </question> <answer> <para> ローカルオブジェクトを実行するのと全く同様です。ただ、COMコンス トラクタの2番目のパラメータにリモートマシンのIPアドレスを渡すだ けです。 </para> <para> <literal>php.ini</literal>に <literal>com.allow_dcom=true</literal>をセットするのを忘れないで ください。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q9"> <question> <para> 'DCOM is disabled in C:\path...\scriptname.php on line 6'という エラーが発生しました。どうすればよいですか? </para> </question> <answer> <para> <literal>php.ini</literal>を編集して <literal>com.allow_dcom=true</literal>として下さい。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q10"> <question> <para> PHPを使用したページでActiveXオブジェクトをロード/操作することは できますか? </para> </question> <answer> <para> これははPHPとは関係ありません。ActiveXオブジェクトは、HTMLドキュ メントから要求があった場合にクライアント側でロードされます。PHP スクリプトとは関係が無く、従ってサーバ側と直接やりとりすることも できません。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q11"> <question> <para> 実行中のコンポーネントのインスタンスを取得することはできますか? </para> </question> <answer> <para> モニカーを使用すれば可能です。同じWordインスタンスに対して複数の 参照を取得したい場合は、以下のようにしてインスタンスを生成します: </para> <programlisting> $word = new COM("C:\docs\word.doc"); </programlisting> <para> こうすれば、実行中のインスタンスが無い、もしくはインスタンスの取 得が不可能だった場合には新規に生成され、インスタンスが取得できた 場合はにはそのハンドルを返します。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q12"> <question> <para> COMオブジェクトから送られてくるイベントを扱う方法はありますか? </para> </question> <answer> <para> 現在のところ、ありません。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q13"> <question> <para> 2つ以上のインターフェースを公開しているCOMオブジェクトのメソッド を呼び出そうとして困っています。どうすればよいですか? </para> </question> <answer> <para> この問題に対する答えは、簡単ですが残念なものです。正確にはわかり ませんが、おそらく打つ手はありません。もしこの問題に関する具体的 な情報があったら<ulink url="mailto:harald.radi@nme.at">私 </ulink>に教えて下さい。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q14"> <question> <para> PHPはCOMを扱えるということは分かりました。ではCOM+についてはどう ですか? </para> </question> <answer> <para> COM+とはMTS(Microsoft Transaction Server)とMSMQ(Microsfot Message Queue Service)を通じてコンポーネントを操作するフレームワー クによってCOMを拡張したものです。が、PHPがそういったコンポーネン トをサポートするにあたって特別に必要なことは特にありません。 </para> </answer> </qandaentry> <qandaentry id="faq.com.q15"> <question> <para> PHPがCOMオブジェクトを操作することができるということは、MTSを使っ てコンポーネントリソースを扱えると考えてもよいということですか? </para> </question> <answer> <para> PHPそれ自体はまだトランザクションをサポートしていません。従って エラーが発生してもロールバック処理は行われません。もしトランザク ションをサポートするコンポーネントを使用する場合は、自分でトラン ザクション処理を実装する必要があります。 </para> </answer> </qandaentry> </qandaset> </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> Index: phpdoc/ja/faq/html.xml +++ phpdoc/ja/faq/html.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <chapter id="faq.html"> <title>PHPとHTML</title> <titleabbrev>PHPとHTML</titleabbrev> <para> PHPとHTMLは深く関係しています:PHPはHTMLを生成し、HTMLにはPHPに送信 される情報が記述されています。 </para> <qandaset> <qandaentry id="faq.html.encoding"> <question> <para> フォームから、もしくはURLから値を渡す場合にはどういったエンコー ド/デコードが必要なのですか? </para> </question> <answer> <para> エンコードが重要になる場面はいくつかあります。 <type>string</type> <varname>$data</varname>というエンコードされ ていない文字列データを渡す場合について考えてみると: <itemizedlist> <listitem> <para> HTMLを通じて渡す場合: 文字列にはどのような値が含まれるか分か らないので、データは<emphasis>必ず</emphasis>htmlescapeを行い、 ダブルクオートで囲まなければなりません。 </para> </listitem> <listitem> <para> URLを通じて渡す場合: URLはいくつかのパーツから成り立ちます。 このデータをそのパーツのうちの一つであると解釈させたいならば、 <function>urlencode</function>でエンコード<emphasis>しなけれ ばなりません。</emphasis> </para> </listitem> </itemizedlist> </para> <para> <example> <title>HTMLのhidden要素</title> <programlisting role="php"> <![CDATA[ <?php echo "<input type=hidden value=\"" . htmlescape($data) . "\">\n"; ?> ]]> </programlisting> </example> <note> <simpara> <varname>$data</varname>を<function>urlencode</function>をして はいけません。なぜなら、その作業はブラウザに任されているからで す。一般に普及している全てのブラウザは正しくこの処理を行ってく れます。ただ、この処理はメソッド(GETやPOST)が何であるかにかか わらずに行われる、ということに気をつけてください。この処理に気 づくのはGETリクエストのときだけになるでしょう。なぜならPOSTリ クエストの内容は通常目に触れることは無いからです。 </simpara> </note> <example> <title>ユーザによって編集するデータ</title> <programlisting role="php"> <![CDATA[ <?php echo "<textarea name=mydata>\n"; echo htmlescape($data)."\n"; echo "</textarea>"; ?> ]]> </programlisting> </example> <note> <simpara> ブラウザはエスケープされたシンボルを解釈するので、dataは意図し たとおりに表示されます。 </simpara> <simpara> フォームの内容を送信するとき、GETかPOSTかにかかわらずdataはブ ラウザによってURLエンコードされ、PHPによってURLデコードされま す。要は、URLエンコード/デコードを自分で行う必要はなく、これら の処理は全て自動的に行われる、と言うことです。 </simpara> </note> <example> <title>URL中の場合</title> <programlisting role="php"> <![CDATA[ <?php echo "<a href=\"" . htmlescape("/nexpage.php?stage=23&data=" . urlencode($data)) . "\">\n"; ?> ]]> </programlisting> </example> <note> <simpara> この例では、実はGETリクエストを摸擬しています。このため、data を手動で<function>urlencode</function>する必要があります。 </simpara> </note> <note> <simpara> 全てのURLを<function>htmlescape</function>する必要があります。 なぜなら、このURLはHTMLのvalue属性として扱われるからです。この 場合は、ブラウザはまず<function>htmlescape</function>されたデー タを元に戻し、それからURLを渡します。URLは <function>urlencode</function>されているので、PHPはこれを正し く解釈することができます。 </simpara> <simpara> URL中の<literal>&amp;</literal>が<literal>&amp;amp;</literal> に置き換えられていることに気づくでしょう。もしあなたがこれを忘 れても、ほとんどのブラウザは元に戻してくれますが、必ずそうして くれるとは限りませんので、URLが動的に変更されるものでなくても URLは<function>htmlescape</function>される<emphasis>べき </emphasis>です。 </simpara> </note> </para> <!-- TODO: a note about addgpcslashes? --> </answer> </qandaentry> <qandaentry id="faq.html.form-image"> <question> <para> &lt;input type="image"&gt;タグを使おうとしているのですが、変数 $foo.xと$foo.yが使えません。どうすればよいのですか? </para> </question> <answer> <para> 以下のようなタグを使えば、標準のボタンの代わりに画像を使用して フォームを送信することができます: <programlisting role="html"> <![CDATA[ <input type="image" src="image.gif" name="foo"> ]]> </programlisting> ユーザが画像のどこかをクリックすると、そのフォームの内容にfoo.x とfoo.yという2つの変数が追加され、サーバに送信されます。 </para> <para> PHPでは$foo.xと$foo.yという名前は変数名として正しくないので、自 動的に$foo_xと$foo_yという名前に変換されます。要は、ピリオドがア ンダースコアに置き換えられる、と言うことです。 </para> </answer> </qandaentry> <qandaentry id="faq.html.arrays"> <question> <para>HTMLフォームで配列を使用するにはどうすればよいですか?</para> </question> <answer> <para> フォームの内容をPHPスクリプトで<link linkend="language.types.array">配列</link>として受け取るには、 &lt;input&gt;, &lt;select&gt; or &lt;textarea&gt;といった要素のnameを以 下のように指定します: <programlisting role="html"> <![CDATA[ <input name="MyArray[]"> <input name="MyArray[]"> <input name="MyArray[]"> <input name="MyArray[]"> ]]> </programlisting> 変数名の最後にあるブラケットに注意してください。これにより、フォー ムの内容が配列として扱われます。異なる要素に同じ名前をつけること で要素を配列にグループ分けすることができます。 <programlisting role="html"> <![CDATA[ <input name="MyArray[]"> <input name="MyArray[]"> <input name="MyOtherArray[]"> <input name="MyOtherArray[]"> ]]> </programlisting> 上記のHTMLの場合、MyArrayとMyOtherArrayという2つの配列が生成され、 PHPスクリプトに送信されます。また、配列に特定のキーを設定するこ ともできます。 <programlisting role="html"> <![CDATA[ <input name="AnotherArray[]"> <input name="AnotherArray[]"> <input name="AnotherArray[email]"> <input name="AnotherArray[phone]"> ]]> </programlisting> この場合、配列AnotherArrayのキーは0, 1, emailそしてphoneとなります。 </para> <para> <note> <para> HTMLに配列のキーを指定するかどうかは自由です。キーを指定しなかっ た場合はフォームに現れる順番に番号がつけられます。最初の例だと、 キーは0, 1, 2, 3となります。 </para> </note> </para> <para> <link linkend="ref.array">配列関数</link>と <link linkend="language.variables.external">PHPの外部から来る変数 </link>も参照して下さい。 </para> </answer> </qandaentry> <qandaentry id="faq.html.select-multiple"> <question> <para> "select multiple"タグで選択された全ての結果を取得するにはどうす ればよいですか? </para> </question> <answer> <para> "select multiple"タグを使うと、ユーザはリストから複数の項目を選 択することができるようになります。選択された項目はフォームの actionで指定されたハンドラに渡されます。問題は、これらの値が全て 同じ名前で渡されることです。つまり、 <programlisting role="html"> <![CDATA[ <select name="var" multiple> ]]> </programlisting> 選択されたそれぞれの項目はactionのハンドラに次のように渡されます: <programlisting> var=option1 var=option2 var=option3 </programlisting> それぞれの項目は前の変数<varname>$var</varname>の値を上書きして しまいます。この問題を解決するには、PHPの"フォームの値を配列にす る"機能を使います。以下のようにするとよいでしょう。 <programlisting role="html"> <![CDATA[ <select name="var[]" multiple> ]]> </programlisting> こうすればPHPに<varname>$var</varname>を配列として扱うように知ら せることができ、各項目のvalueの値は配列の要素としてvar[]に追加さ れます。最初の項目は<varname>$var[0]</varname>になり、次の項目は <varname>$var[1]</varname>...というようになります。 <function>count</function>関数を使えば選択された項目の数を知るこ とができます。またもし必要なら<function>sort</function>関数を使っ てソートを行うこともできます。 </para> <para> JavaScriptを使っている場合、フォーム要素に要素名を使って(訳注: document.myform.myelement.value等の様に)アクセスしようとすると、 要素名に含まれる<literal>[]</literal>が問題となることがあるので 気をつけてください。この場合は、数字で表されるフォーム要素のIDを 使用するか、シングルクオートで要素名を囲んでフォーム要素の配列の インデックスとしてアクセスして下さい。例えば、以下のようにします: <programlisting> variable = documents.forms[0].elements['var[]']; </programlisting> </para> </answer> </qandaentry> </qandaset> </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->
« previous php.doc (#969338958) next »