Zend_Validate-Hostname.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 22858 -->
  4. <sect2 id="zend.validate.set.hostname">
  5. <title>ホスト名</title>
  6. <para>
  7. <classname>Zend_Validate_Hostname</classname> は、ホスト名が仕様を満たしているかどうかの検証を行います。
  8. 三種類の形式のホスト名、つまり <acronym>DNS</acronym> ホスト名
  9. (たとえば <filename>domain.com</filename>)、IP アドレス (たとえば 1.2.3.4)
  10. そしてローカルホスト名 (たとえば localhost) の検証が可能です。
  11. デフォルトでは <acronym>DNS</acronym> ホスト名のみが有効となります。
  12. </para>
  13. <sect3 id="zend.validate.set.hostname.options">
  14. <title>Zend_Validate_Hostname でサポートされるオプション</title>
  15. <para>
  16. <classname>Zend_Validate_Hostname</classname> では、下記のオプションがサポートされます。
  17. </para>
  18. <!-- TODO : to be translated -->
  19. <itemizedlist>
  20. <listitem>
  21. <para>
  22. <emphasis><property>allow</property></emphasis>: Defines the sort of hostname
  23. which is allowed to be used. See <link
  24. linkend="zend.validate.set.hostname.types">Hostname types</link> for
  25. details.
  26. </para>
  27. </listitem>
  28. <listitem>
  29. <para>
  30. <emphasis><property>idn</property></emphasis>: Defines if <acronym>IDN</acronym>
  31. domains are allowed or not. This option defaults to <constant>TRUE</constant>.
  32. </para>
  33. </listitem>
  34. <listitem>
  35. <para>
  36. <emphasis><property>ip</property></emphasis>: Allows to define a own IP
  37. validator. This option defaults to a new instance of
  38. <classname>Zend_Validate_Ip</classname>.
  39. </para>
  40. </listitem>
  41. <listitem>
  42. <para>
  43. <emphasis><property>tld</property></emphasis>: Defines if
  44. <acronym>TLD</acronym>s are validated. This option defaults to
  45. <constant>TRUE</constant>.
  46. </para>
  47. </listitem>
  48. </itemizedlist>
  49. </sect3>
  50. <sect3 id="zend.validate.set.hostname.basic">
  51. <title>基本的な使用法</title>
  52. <para>
  53. 基本的な使用法は、以下のようになります。
  54. </para>
  55. <programlisting language="php"><![CDATA[
  56. $validator = new Zend_Validate_Hostname();
  57. if ($validator->isValid($hostname)) {
  58. // ホスト名は正しい形式のようです
  59. } else {
  60. // 不正な形式なので、理由を表示します
  61. foreach ($validator->getMessages() as $message) {
  62. echo "$message\n";
  63. }
  64. }
  65. ]]></programlisting>
  66. <para>
  67. これは、ホスト名 <varname>$hostname</varname> を検証し、失敗した場合は
  68. その原因を表す便利なエラーメッセージを
  69. <methodname>$validator->getMessages()</methodname> で取得します。
  70. </para>
  71. </sect3>
  72. <sect3 id="zend.validate.set.hostname.types">
  73. <title>さまざまな形式のホスト名を検証</title>
  74. <para>
  75. IP アドレスやローカルホスト名、あるいはその両方を正しいホスト名として認めたいこともあるでしょう。
  76. その場合は、<classname>Zend_Validate_Hostname</classname> のインスタンスを作成する際にパラメータを渡します。
  77. このパラメータには、どの形式のホスト名を許可するのかを表す整数値を指定しなければなりません。
  78. できるだけ、<classname>Zend_Validate_Hostname</classname> の定数を使用するようにしましょう。
  79. </para>
  80. <para>
  81. <classname>Zend_Validate_Hostname</classname> の定数は次のとおりです。<constant>ALLOW_DNS</constant> は <acronym>DNS</acronym> ホスト名のみを許可し、
  82. <constant>ALLOW_IP</constant> は IP アドレスを許可します。また <constant>ALLOW_LOCAL</constant>
  83. はローカルネットワーク名を許可し、<constant>ALLOW_ALL</constant> は前述の三種類をすべて許可します。
  84. </para>
  85. <!-- TODO : to be translated -->
  86. <para>
  87. Additionally there is <constant>ALLOW_URI</constant> which allows to check hostnames
  88. according to <ulink url="http://tools.ietf.org/html/rfc3986">RFC3986</ulink>. These
  89. are registered names which are used by <acronym>WINS</acronym>, NetInfo and also local
  90. hostnames like those defined within your <filename>.hosts</filename> file. For security
  91. reasons <constant>ALLOW_URI</constant> is not contained within
  92. <constant>ALLOW_ALL</constant>.
  93. </para>
  94. <para>
  95. IP アドレスだけをチェックするには、以下の例のようにします。
  96. </para>
  97. <programlisting language="php"><![CDATA[
  98. $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
  99. if ($validator->isValid($hostname)) {
  100. // ホスト名は正しい形式のようです
  101. } else {
  102. // 不正な形式なので、理由を表示します
  103. foreach ($validator->getMessages() as $message) {
  104. echo "$message\n";
  105. }
  106. }
  107. ]]></programlisting>
  108. <para>
  109. <constant>ALLOW_ALL</constant> を使用して共通のすべてのホスト名形式を許可するほかに、
  110. これらの形式を組み合わせることもできます。
  111. たとえば、 <acronym>DNS</acronym> およびローカルホスト名を許可するには、
  112. <classname>Zend_Validate_Hostname</classname> のインスタンスを次のように作成します。
  113. </para>
  114. <programlisting language="php"><![CDATA[
  115. $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_IP);]]></programlisting>
  116. </sect3>
  117. <sect3 id="zend.validate.set.hostname.idn">
  118. <title>国際化ドメイン名を検証</title>
  119. <para>
  120. 国別コードトップレベルドメイン (Country Code Top Level Domains: ccTLDs)
  121. の一部、たとえば 'de' (ドイツ) などでは、ドメイン名の中に国際化文字の使用をサポートしています。
  122. これは、国際化ドメイン名 (International Domain Names: <acronym>IDN</acronym>) といわれるものです。
  123. これらのドメインについても、<classname>Zend_Validate_Hostname</classname>
  124. の検証プロセスで使用する文字を拡張することで検証できます。
  125. </para>
  126. <note>
  127. <title>IDN ドメイン</title>
  128. <para>
  129. これまでに、50以上の ccTLD が <acronym>IDN</acronym> ドメインをサポートします。
  130. </para>
  131. </note>
  132. <para>
  133. <acronym>IDN</acronym> ドメインに対するマッチングを行う方法は、通常のホスト名の場合とまったく同じです。
  134. というのも、 <acronym>IDN</acronym> のマッチングはデフォルトで有効になっているからです。
  135. <acronym>IDN</acronym> の検証を無効にしたい場合は、<classname>Zend_Validate_Hostname</classname>
  136. のコンストラクタにパラメータを渡すか、あるいは
  137. <methodname>setValidateIdn()</methodname> メソッドを使用します。
  138. </para>
  139. <para>
  140. <acronym>IDN</acronym> の検証を無効にするには、<classname>Zend_Validate_Hostname</classname>
  141. のコンストラクタに二番目のパラメータを次のように渡します。
  142. </para>
  143. <programlisting language="php"><![CDATA[
  144. $validator =
  145. new Zend_Validate_Hostname(
  146. array(
  147. 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
  148. 'idn' => false
  149. )
  150. );
  151. ]]></programlisting>
  152. <para>
  153. あるいは、 <constant>TRUE</constant> または <constant>FALSE</constant> を
  154. <methodname>setValidateIdn()</methodname> に渡すことで、
  155. <acronym>IDN</acronym> の検証を有効あるいは無効にすることもできます。
  156. 現在サポートされていない <acronym>IDN</acronym> ホスト名に対するマッチングを行おうとすると、
  157. 国際化文字が含まれている場合に検証に失敗します。
  158. 追加の文字を指定した ccTLD ファイルが <filename>Zend/Validate/Hostname</filename>
  159. に存在しない場合は、通常のホスト名の検証を行います。
  160. </para>
  161. <note>
  162. <title>IDN 検証</title>
  163. <para>
  164. <acronym>IDN</acronym> の検証は、 <acronym>DNS</acronym> ホスト名の検証を有効にしている場合にのみ行われることに注意しましょう。
  165. </para>
  166. </note>
  167. </sect3>
  168. <sect3 id="zend.validate.set.hostname.tld">
  169. <title>トップレベルドメインを検証</title>
  170. <para>
  171. デフォルトでは、ホスト名の検証は既知の <acronym>TLD</acronym> の一覧に基づいて行われます。
  172. この機能が不要な場合は、 <acronym>IDN</acronym> サポートを無効にするのと同じ方法で無効にできます。
  173. <acronym>TLD</acronym> の検証を無効にするには、<classname>Zend_Validate_Hostname</classname> のコンストラクタに三番目のパラメータを渡します。
  174. 以下の例では、 <acronym>IDN</acronym> の検証は二番目のパラメータで有効にしています。
  175. </para>
  176. <programlisting language="php"><![CDATA[
  177. $validator =
  178. new Zend_Validate_Hostname(
  179. array(
  180. 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
  181. 'idn' => true,
  182. 'tld' => false
  183. )
  184. );
  185. ]]></programlisting>
  186. <para>
  187. あるいは、 <constant>TRUE</constant> または <constant>FALSE</constant> を
  188. <methodname>setValidateIdn()</methodname> に渡すことで、
  189. <acronym>TLD</acronym> の検証を有効あるいは無効にすることもできます。
  190. </para>
  191. <note>
  192. <title>TLD 検証</title>
  193. <para>
  194. <acronym>TLD</acronym> の検証は、 <acronym>DNS</acronym> ホスト名の検証を有効にしている場合にのみ行われることに注意しましょう。
  195. </para>
  196. </note>
  197. </sect3>
  198. </sect2>
  199. <!--
  200. vim:se ts=4 sw=4 et:
  201. -->