27.5. Walidacja adresów serwerów

Zend_Validate_Hostname pozwala ci na przeprowadzenie walidacji adresów serwerów w oparciu o zestaw znanych specyfikacji. Możliwe jest sprawdzenie trzech różnych typów adresów serwerów: adresu DNS (np. domain.com), adresu IP (np. 1.2.3.4), oraz adresu lokalnego (np. localhost). Domyślne będzie to sprawdzane jedynie w kontekście adresów DNS.

Podstawowe użycie

Poniżej podstawowy przykład użycia:

<?php
require_once 'Zend/Validate/Hostname.php';
$validator = new Zend_Validate_Hostname();
if ($validator->isValid($hostname)) {
    // nazwa serwera wygląda na prawidłową
} else {
    // nazwa jest nieprawidłowa; wyświetl powody
    foreach ($validator->getMessages() as $message) {
        echo "$message\n";
    }
}

Sprawdzi to nazwę serwera $hostname i w przypadku niepowodzenia wypełni $validator->getMessages() użytecznymi informacjami informującymi o błędach.

Walidacja różnych typów adresów serwerów

Może się okazać, że chcesz zezwolić na użycie adresów IP, adresów lokalnych lub kombinacji dozwolonych typów. Możesz to zrobić przekazując parametr do obiektu Zend_Validate_Hostname gdy tworzysz jego instancję. Parametr powinien być liczbą całkowitą określającą, ktorego typu adresy są dozwolone. Zalecamy użycie stałych klasy Zend_Validate_Hostname w tym celu.

Stałe klasy Zend_Validate_Hostname to: ALLOW_DNS aby zezwalać tylko na adresy DNS, ALLOW_IP aby zezwalać tylko na adresy IP, ALLOW_LOCAL aby zezwalać tylko na adresy lokalne, oraz ALLOW_ALL aby zezwalać na wszystkie typy. Aby tylko sprawdzić adres dla adresów IP możesz użyć poniższego przykładu:

<?php
require_once 'Zend/Validate/Hostname.php';
$validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
if ($validator->isValid($hostname)) {
    // nazwa serwera wygląda na prawidłową
} else {
    // nazwa jest nieprawidłowa; wyświetl powody
    foreach ($validator->getMessages() as $message) {
        echo "$message\n";
    }
}

Tak samo dobrze jak używając stałej ALLOW_ALL do określenia akceptacji adresów wszystkich typow, możesz użyć dowolnej kombinacji tych typów. Na przykład aby akceptować adresy DNS oraz adresy lokalne, uwtórz instancję obiektu Zend_Validate_Hostname w taki sposób:

<?php
$validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_IP);
}