[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Validate-EmailAddress.xml
blob420f667346e8516109afa9e0687c6a38c0b112bd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 21241 -->
4 <sect2 id="zend.validate.set.email_address">
5     <title>メールアドレス</title>
7     <para>
8         <classname>Zend_Validate_EmailAddress</classname> は、メールアドレスの検証を行います。
9         このバリデータは、まずメールアドレスを
10         local-part @ hostname
11         に分割し、メールアドレスやホスト名の仕様にあわせて検証します。
12     </para>
14     <sect3 id="zend.validate.set.email_address.basic">
15         <title>基本的な使用法</title>
17         <para>
18             基本的な使用法は、以下のようになります。
19         </para>
21         <programlisting language="php"><![CDATA[
22 $validator = new Zend_Validate_EmailAddress();
23 if ($validator->isValid($email)) {
24     // メールアドレスは正しい形式のようです
25 } else {
26     // 不正な形式なので、理由を表示します
27     foreach ($validator->getMessages() as $message) {
28         echo "$message\n";
29     }
31 ]]></programlisting>
33         <para>
34             これは、メールアドレス <varname>$email</varname> を検証し、失敗した場合は
35             その原因を表す便利なエラーメッセージを
36             <code>$validator->getMessages()</code> で取得します。
37         </para>
38     </sect3>
40     <sect3 id="zend.validate.set.email_address.options">
41         <title>メールアドレス検証のオプション</title>
43         <para>
44             <classname>Zend_Validate_EmailAddress</classname>は、
45             開始時に関係するオプションを持つ配列を与えることによって、
46             または後で <methodname>setOptions()</methodname> を使って
47             セットできるいくつかのオプションをサポートします。
48             下記のオプションがサポートされます。
49         </para>
51         <itemizedlist>
52             <listitem>
53                 <para>
54                     <emphasis><property>allow</property></emphasis>: ドメイン名のいずれのタイプを受付可能か定義します。
55                     このオプションは、ホスト名バリデータをセットするために
56                     hostname オプションとともに使われます。
57                     このオプションで可能な値について詳しくは、
58                     <link linkend="zend.validate.set.hostname">ホスト名</link>をご覧ください。
59                     そして <constant>ALLOW</constant>* 定数が可能です。
60                     既定値は <constant>ALLOW_DNS</constant> です。
61                 </para>
62             </listitem>
64             <listitem>
65                 <para>
66                     <emphasis><property>deep</property></emphasis>: サーバの MX レコードを強度のチェックで検証するべきかどうか定義します。
67                     このオプションが <constant>TRUE</constant> に設定されると、
68                     サーバがメールを受け付けるかどうか検証するために、
69                     MX レコードに加えて A , A6 及び <constant>AAAA</constant> レコードも使われます。
70                     このオプションの既定値は <constant>FALSE</constant> です。
71                 </para>
72             </listitem>
74             <listitem>
75                 <para>
76                     <emphasis><property>domain</property></emphasis>: ドメインパートをチェックすべきかどうか定義します。
77                     このオプションが <constant>FALSE</constant> に設定されると、
78                     メールアドレスのローカルパートのみがチェックされます。
79                     この場合、ホスト名バリデータは呼ばれません。
80                     このオプションの既定値は <constant>TRUE</constant> です。
81                 </para>
82             </listitem>
84             <listitem>
85                 <para>
86                     <emphasis><property>hostname</property></emphasis>: 検証される電子メール・アドレスのドメインパートで
87                     ホスト名バリデータをセットします。
88                 </para>
89             </listitem>
91             <listitem>
92                 <para>
93                     <emphasis><property>mx</property></emphasis>: サーバから MX レコードが検出されるべきかどうか定義します。
94                     もしこのオプションが <constant>TRUE</constant> と定義されると、
95                     サーバがメールを受け付けるかどうか検証するために MX レコードが使われます。
96                     このオプションの既定値は <constant>FALSE</constant> です。
97                 </para>
98             </listitem>
99         </itemizedlist>
101         <programlisting language="php"><![CDATA[
102 $validator = new Zend_Validate_EmailAddress();
103 $validator->setOptions(array('domain' => false));
104 ]]></programlisting>
105     </sect3>
107     <sect3 id="zend.validate.set.email_address.complexlocal">
108         <title>複雑なローカルパート</title>
110         <para>
111             <classname>Zend_Validate_EmailAddress</classname> は、メールアドレスの検証を
112             RFC2822 にもとづいて行います。たとえば、妥当な形式のメールアドレスとしては
113             <code>bob@domain.com</code>、<code>bob+jones@domain.us</code>、
114             <code>"bob@jones"@domain.com</code> および <code>"bob jones"@domain.com</code>
115             などがあります。
116         </para>
118         <para>
119             かつて使われていたものの、現在は有効とはみなされないフォーマットもあります
120             (たとえば、メールアドレスに改行文字や "\" を使用するなど)。
121         </para>
122     </sect3>
124     <sect3 id="zend.validate.set.email_address.purelocal">
125         <title>ローカルパートのみの検証</title>
127         <para>
128             もしメールアドレスのローカルパートのみをチェックするために
129             <classname>Zend_Validate_EmailAddress</classname> を必要として、
130             ホスト名の検証を無効にしたいなら、
131             <property>domain</property> オプションに <constant>FALSE</constant> を設定できます。
132             これにより、 <classname>Zend_Validate_EmailAddress</classname> が
133             メールアドレスのホスト名部分を検証しないようにします。
134         </para>
136         <programlisting language="php"><![CDATA[
137 $validator = new Zend_Validate_EmailAddress();
138 $validator->setOptions(array('domain' => FALSE));
139 ]]></programlisting>
140     </sect3>
142     <sect3 id="zend.validate.set.email_address.hostnametype">
143         <title>さまざまな形式のホスト名の検証</title>
145         <para>
146             メールアドレスのホスト名部分の検証は、
147             <link linkend="zend.validate.set.hostname"><classname>Zend_Validate_Hostname</classname></link>
148             で行います。デフォルトでは、<code>domain.com</code>
149             形式の DNS ホスト名のみが有効となります。しかし、
150             IP アドレスやローカルホスト名も有効にしたいこともあるでしょう。
151         </para>
153         <para>
154             その場合は、<classname>Zend_Validate_EmailAddress</classname>
155             のインスタンスを作成する際にパラメータを渡さなければなりません。
156             このパラメータで、認めたいホスト名の形式を指定します。
157             詳細は <classname>Zend_Validate_Hostname</classname> を参照ください。
158             たとえば DNS ホスト名およびローカルホスト名のどちらも許可するには、次のようにします。
159         </para>
161         <programlisting language="php"><![CDATA[
162 $validator = new Zend_Validate_EmailAddress(
163                     Zend_Validate_Hostname::ALLOW_DNS |
164                     Zend_Validate_Hostname::ALLOW_LOCAL);
165 if ($validator->isValid($email)) {
166     // メールアドレスは正しい形式のようです
167 } else {
168     // 不正な形式なので、理由を表示します
169     foreach ($validator->getMessages() as $message) {
170         echo "$message\n";
171     }
173 ]]></programlisting>
174     </sect3>
176     <sect3 id="zend.validate.set.email_address.checkacceptance">
177         <title>そのホスト名が実際にメールを受け付けるかどうかのチェック</title>
179         <para>
180             ただ単にメールアドレスが正しい書式であるというだけでは、
181             そのアドレスが実際に存在するかどうかはわかりません。
182             この問題を解決するには、MX の検証を行います。
183             メールアドレスのホスト名に対応する DNS レコードに、MX (メール)
184             のエントリが存在するかどうかを調べるのです。
185             これは、そのホストがメールを受け付けているかどうかを教えてはくれますが、
186             そのメールアドレス自体が正しいものであるかどうかを知ることはできません。
187         </para>
189         <para>
190             MX のチェックはデフォルトでは無効です。
191             MX のチェックを有効にするには、<classname>Zend_Validate_EmailAddress</classname>
192             コンストラクタの 2 番目のパラメータを渡します。
193         </para>
195         <programlisting language="php"><![CDATA[
196 $validator = new Zend_Validate_EmailAddress(
197     array(
198         'allow' => Zend_Validate_Hostname::ALLOW_DNS,
199         'mx'    => true
200     )
202 ]]></programlisting>
204         <note>
205             <title>WindowsでのMX のチェック</title>
207             <para>
208                 Windows 環境の範囲内では、
209                 MX のチェックは <acronym>PHP</acronym> 5.3 かそれ以上を使う場合のみ可能です。
210                 <acronym>PHP</acronym> 5.3 未満では MX のチェックはオプションで有効にされたとしても、
211                 使われません。
212             </para>
213         </note>
215         <para>
216             あるいは、<constant>TRUE</constant> または <constant>FALSE</constant> を
217             <code>$validator->setValidateMx()</code> に渡すことで、
218             MX の検証を有効あるいは無効にすることもできます。
219         </para>
221         <para>
222             この設定を有効にすると、ネットワーク関数を用いて
223             メールアドレスのホスト名部に対する MX レコードの存在チェックをします。
224             これにより、スクリプトの処理速度が低下することに気をつけてください。
225         </para>
227         <para>
228             しばしば MX レコードの検証は、メールが受け付けられたとしても <constant>FALSE</constant> を返します。
229             この振る舞いの背後にある理由は、サーバが MX レコードを提供しなくてもサーバはメールを受付できることです。
230             この場合、サーバは A, A6 または <constant>AAAA</constant> レコードを提供します。
231             それらのほかのレコードでも <classname>Zend_Validate_EmailAddress</classname> がチェックできるようにするためには、
232             強度の MX 検証を設定する必要があります。
233             これは開始時に <property>deep</property> オプションを設定するか、
234             または <methodname>setOptions()</methodname> を使って行ないます。
235         </para>
237         <programlisting language="php"><![CDATA[
238 $validator = new Zend_Validate_EmailAddress(
239     array(
240         'allow' => Zend_Validate_Hostname::ALLOW_DNS,
241         'mx'    => true,
242         'deep'  => true
243     )
245 ]]></programlisting>
247         <warning>
248             <title>パフォーマンスの警告</title>
250             <para>
251                 MX チェックを有効にすると、使用されるネットワーク機能のせいで
252                 スクリプトが遅くなることに気づくでしょう。
253                 強度のチェックを有効にすると与えられたサーバで追加の3種類を探すため、
254                 さらにスクリプトが遅くなります。
255             </para>
256         </warning>
258         <note>
259             <title>許可されないIPアドレス</title>
261             <para>
262                 MX 検証は外部のサーバでのみ受け付けられることを注意すべきです。
263                 強度の MX 検証が有効なとき、
264                 <command>192.168.*</command> や <command>169.254.*</command> のような
265                 ローカル IP アドレスは受け付けません。
266             </para>
267         </note>
268     </sect3>
270     <sect3 id="zend.validate.set.email_address.validateidn">
271         <title>国際化ドメイン名の検証</title>
273         <para>
274             <classname>Zend_Validate_EmailAddress</classname> は、ドメインの中に国際文字が使われている場合も処理できます。
275             このようなドメインは、国際化ドメイン名 (International Domain Name: IDN)
276             と呼ばれています。これはデフォルトで有効になっていますが、無効にすることも可能です。
277             無効にするには、<classname>Zend_Validate_EmailAddress</classname> が内部で保持している
278             <classname>Zend_Validate_Hostname</classname> オブジェクトの設定を変更します。
279         </para>
281         <programlisting language="php"><![CDATA[
282 $validator->getHostnameValidator()->setValidateIdn(false);
283 ]]></programlisting>
285         <para>
286             <methodname>setValidateIdn()</methodname> の詳細な使用法は、
287             <classname>Zend_Validate_Hostname</classname> のドキュメントを参照ください。
288         </para>
290         <para>
291             IDN の検証は、DNS ホスト名の検証を有効にしている場合にのみ行われることに注意しましょう。
292         </para>
293     </sect3>
295     <sect3 id="zend.validate.set.email_address.validatetld">
296         <title>トップレベルドメインの検証</title>
298         <para>
299             デフォルトでは、ホスト名の検証は既知の TLD の一覧に基づいて行われます。
300             これはデフォルトで有効になっていますが、無効にすることもできます。無効にするには、
301             無効にするには、<classname>Zend_Validate_EmailAddress</classname> が内部で保持している
302             <classname>Zend_Validate_Hostname</classname> オブジェクトの設定を変更します。
303         </para>
305         <programlisting language="php"><![CDATA[
306 $validator->getHostnameValidator()->setValidateTld(false);
307 ]]></programlisting>
309         <para>
310             <methodname>setValidateTld()</methodname> の詳細な使用法は、
311             <classname>Zend_Validate_Hostname</classname> のドキュメントを参照ください。
312         </para>
314         <para>
315             TLD の検証は、DNS ホスト名の検証を有効にしている場合にのみ行われることに注意しましょう。
316         </para>
317     </sect3>
319     <sect3 id="zend.validate.set.email_address.setmessage">
320         <title>メッセージの設定</title>
322         <para>
323             <classname>Zend_Validate_EmailAddress</classname> は、
324             <classname>Zend_Validate_Hostname</classname> を使用してメールアドレスのホスト名部分をチェックします。
325             Zend Framework 1.10 以降、
326             <classname>Zend_Validate_Hostname</classname> 用のメッセージを
327             <classname>Zend_Validate_EmailAddress</classname>
328             から設定できるようになります。
329         </para>
331         <programlisting language="php"><![CDATA[
332 $validator = new Zend_Validate_EmailAddress();
333 $validator->setMessages(
334     array(
335         Zend_Validate_Hostname::UNKNOWN_TLD => 'I don't know the TLD you gave'
336     )
338 ]]></programlisting>
340         <para>
341             Zend Framework 1.10 より前のバージョンでは、まず
342             <classname>Zend_Validate_Hostname</classname> にメッセージをアタッチしてからそれを
343             <classname>Zend_Validate_EmailAddress</classname> に設定しないと独自のメッセージを返せませんでした。
344         </para>
345     </sect3>
346 </sect2>
347 <!--
348 vim:se ts=4 sw=4 et: