<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect2 id="zend.validate.set.ip">
    <title>Ip</title>

    <para>
        <classname>Zend_Validate_Ip</classname> erlaubt es zu Prüfen ob ein gegebener Wert eine IP
        Adresse ist. Er unterstützt den IPv4 und auch den IPv6 Standard.
    </para>

    <sect3 id="zend.validate.set.ip.options">
        <title>Unterstützte Optionen für Zend_Validate_Ip</title>

        <para>
            Die folgenden Optionen werden für <classname>Zend_Validate_Ip</classname> unterstützt:
        </para>

        <itemizedlist>
            <listitem>
                <para>
                    <emphasis><property>allowipv4</property></emphasis>: Definiert ob die Prüfung
                    IPv4 Adressen erlaubt. Diese Option ist standardmäßig <constant>TRUE</constant>.
                </para>
            </listitem>

            <listitem>
                <para>
                    <emphasis><property>allowipv6</property></emphasis>: Definiert ob die Prüfung
                    IPv6 Adressen erlaubt. Diese Option ist standardmäßig <constant>TRUE</constant>.
                </para>
            </listitem>
        </itemizedlist>
    </sect3>

    <sect3 id="zend.validate.set.ip.basic">
        <title>Grundsätzliche Verwendung</title>

        <para>
            Ein einfaches Beispiel für die Verwendung ist anbei:
        </para>

        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_Ip();
if ($validator->isValid($ip)) {
    // IP scheint gültig zu sein
} else {
    // IP ist ungültig; Gründe ausgeben
}
]]></programlisting>

        <note>
            <title>Ungültige IP Adressen</title>

            <para>
                Es ist zu beachten das <classname>Zend_Validate_Ip</classname> nur IP Adressen
                prüft. Adressen wie '<filename>mydomain.com</filename>' oder
                '<filename>192.168.50.1/index.html</filename>' sind keine gültigen IP Adressen. Sie
                sind entweder Hostnamen oder gültige <acronym>URL</acronym>s, aber keine IP
                Adressen.
            </para>
        </note>

        <note>
            <title>IPv6 Prüfung</title>

            <para>
                <classname>Zend_Validate_Ip</classname> prüft IPv6 Adressen mit einer Regex. Der
                Grund ist, dass die Filter und Methoden von <acronym>PHP</acronym> der
                <acronym>RFC</acronym> nicht folgen. Viele andere vorhandene Klassen folgen Ihr auch
                nicht.
            </para>
        </note>
    </sect3>

    <sect3 id="zend.validate.set.ip.singletype">
        <title>IPv4 oder IPv6 alleine prüfen</title>

        <para>
            Manchmal ist es nützlich nur eines der unterstützten Formate zu prüfen. Zum Beispiel
            wenn das eigene Netzwert nur IPv4 unterstützt. In diesem Fall wäre es sinnlos IPv6
            in der Prüfung zu erlauben.
        </para>

        <para>
            Um <classname>Zend_Validate_Ip</classname> auf ein Protokoll zu begrenzen kann man die
            Optionen <property>allowipv4</property> oder <property>allowipv6</property> auf
            <constant>FALSE</constant> setzen. Man kann das durchführen indem die Option entweder im
            Constructor angegeben wird, oder indem <methodname>setOptions()</methodname> im
            Nachhinein verwendet wird.
        </para>

        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_Ip(array('allowipv6' => false);
if ($validator->isValid($ip)) {
    // IP scheint eine gültige IPv4 Adresse zu sein
} else {
    // IP ist keine IPv4 Adresse
}
]]></programlisting>

        <note>
            <title>Standard Verhalten</title>

            <para>
                Das Standardverhalten dem <classname>Zend_Validate_Ip</classname> folgt, ist es
                beide Standards zu erlauben.
            </para>
        </note>
    </sect3>
</sect2>
