1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 21247 -->
4 <sect2 id="zend.validate.set.hostname">
9 <classname>Zend_Validate_Hostname</classname> は、ホスト名が仕様を満たしているかどうかの検証を行います。
10 三種類の形式のホスト名、つまり <acronym>DNS</acronym> ホスト名
11 (たとえば domain.com)、IP アドレス (たとえば 1.2.3.4)
12 そしてローカルホスト名 (たとえば localhost) の検証が可能です。
13 デフォルトでは <acronym>DNS</acronym> ホスト名のみが有効となります。
16 <sect3 id="zend.validate.set.hostname.options">
17 <title>Supported options for Zend_Validate_Hostname</title>
20 The following options are supported for <classname>Zend_Validate_Hostname</classname>:
26 <emphasis><property>allow</property></emphasis>: Defines the sort of hostname
27 which is allowed to be used. See <link
28 linkend="zend.validate.set.hostname.types">Hostname types</link> for
35 <emphasis><property>idn</property></emphasis>: Defines if <acronym>IDN</acronym>
36 domains are allowed or not. This option defaults to <constant>TRUE</constant>.
42 <emphasis><property>ip</property></emphasis>: Allows to define a own IP
43 validator. This option defaults to a new instance of
44 <classname>Zend_Validate_Ip</classname>.
50 <emphasis><property>tld</property></emphasis>: Defines if
51 <acronym>TLD</acronym>s are validated. This option defaults to
52 <constant>TRUE</constant>.
58 <sect3 id="zend.validate.set.hostname.basic">
59 <title>基本的な使用法</title>
65 <programlisting language="php"><![CDATA[
66 $validator = new Zend_Validate_Hostname();
67 if ($validator->isValid($hostname)) {
71 foreach ($validator->getMessages() as $message) {
78 これは、ホスト名 <varname>$hostname</varname> を検証し、失敗した場合は
80 <methodname>$validator->getMessages()</methodname> で取得します。
85 <sect3 id="zend.validate.set.hostname.types">
86 <title>さまざまな形式のホスト名を検証</title>
89 IP アドレスやローカルホスト名、あるいはその両方を正しいホスト名として認めたいこともあるでしょう。
90 その場合は、<classname>Zend_Validate_Hostname</classname> のインスタンスを作成する際にパラメータを渡します。
91 このパラメータには、どの形式のホスト名を許可するのかを表す整数値を指定しなければなりません。
92 できるだけ、<classname>Zend_Validate_Hostname</classname> の定数を使用するようにしましょう。
96 <classname>Zend_Validate_Hostname</classname> の定数は次のとおりです。<constant>ALLOW_DNS</constant> は <acronym>DNS</acronym> ホスト名のみを許可し、
97 <constant>ALLOW_IP</constant> は IP アドレスを許可します。また <constant>ALLOW_LOCAL</constant>
98 はローカルネットワーク名を許可し、<constant>ALLOW_ALL</constant> はこれら三種類をすべて許可します。
99 IP アドレスだけをチェックするには、以下の例のようにします。
102 <programlisting language="php"><![CDATA[
103 $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
104 if ($validator->isValid($hostname)) {
108 foreach ($validator->getMessages() as $message) {
115 <constant>ALLOW_ALL</constant> を使用してすべての形式を許可するほかに、
116 これらの形式を組み合わせることもできます。
117 たとえば、 <acronym>DNS</acronym> およびローカルホスト名を許可するには、
118 <classname>Zend_Validate_Hostname</classname> のインスタンスを次のように作成します。
121 <programlisting language="php"><![CDATA[
122 $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_IP);]]></programlisting>
126 <sect3 id="zend.validate.set.hostname.idn">
127 <title>国際化ドメイン名を検証</title>
130 国別コードトップレベルドメイン (Country Code Top Level Domains: ccTLDs)
131 の一部、たとえば 'de' (ドイツ) などでは、ドメイン名の中に国際化文字の使用をサポートしています。
132 これは、国際化ドメイン名 (International Domain Names: <acronym>IDN</acronym>) といわれるものです。
133 これらのドメインについても、<classname>Zend_Validate_Hostname</classname>
134 の検証プロセスで使用する文字を拡張することで検証できます。
138 <title>IDN ドメイン</title>
141 これまでに、50以上の ccTLD が <acronym>IDN</acronym> ドメインをサポートします。
146 <acronym>IDN</acronym> ドメインに対するマッチングを行う方法は、通常のホスト名の場合とまったく同じです。
147 というのも、 <acronym>IDN</acronym> のマッチングはデフォルトで有効になっているからです。
148 <acronym>IDN</acronym> の検証を無効にしたい場合は、<classname>Zend_Validate_Hostname</classname>
149 のコンストラクタにパラメータを渡すか、あるいは
150 <methodname>setValidateIdn()</methodname> メソッドを使用します。
154 <acronym>IDN</acronym> の検証を無効にするには、<classname>Zend_Validate_Hostname</classname>
155 のコンストラクタに二番目のパラメータを次のように渡します。
158 <programlisting language="php"><![CDATA[
160 new Zend_Validate_Hostname(
162 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
169 あるいは、 <constant>TRUE</constant> または <constant>FALSE</constant> を
170 <methodname>setValidateIdn()</methodname> に渡すことで、
171 <acronym>IDN</acronym> の検証を有効あるいは無効にすることもできます。
172 現在サポートされていない <acronym>IDN</acronym> ホスト名に対するマッチングを行おうとすると、
173 国際化文字が含まれている場合に検証に失敗します。
174 追加の文字を指定した ccTLD ファイルが <filename>Zend/Validate/Hostname</filename>
175 に存在しない場合は、通常のホスト名の検証を行います。
179 <title>IDN 検証</title>
182 <acronym>IDN</acronym> の検証は、 <acronym>DNS</acronym> ホスト名の検証を有効にしている場合にのみ行われることに注意しましょう。
187 <sect3 id="zend.validate.set.hostname.tld">
188 <title>トップレベルドメインを検証</title>
191 デフォルトでは、ホスト名の検証は既知の <acronym>TLD</acronym> の一覧に基づいて行われます。
192 この機能が不要な場合は、 <acronym>IDN</acronym> サポートを無効にするのと同じ方法で無効にできます。
193 <acronym>TLD</acronym> の検証を無効にするには、<classname>Zend_Validate_Hostname</classname> のコンストラクタに三番目のパラメータを渡します。
194 以下の例では、 <acronym>IDN</acronym> の検証は二番目のパラメータで有効にしています。
197 <programlisting language="php"><![CDATA[
199 new Zend_Validate_Hostname(
201 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
209 あるいは、 <constant>TRUE</constant> または <constant>FALSE</constant> を
210 <methodname>setValidateIdn()</methodname> に渡すことで、
211 <acronym>TLD</acronym> の検証を有効あるいは無効にすることもできます。
215 <title>TLD 検証</title>
218 <acronym>TLD</acronym> の検証は、 <acronym>DNS</acronym> ホスト名の検証を有効にしている場合にのみ行われることに注意しましょう。