27.4. Walidacja adresów email
Poprzedni | Rozdział 27. Zend_Validate | Następny

## 27.4. Walidacja adresów email

Klasa Zend_Validate_Email pozwala ci na przeprowadzenie walidacji adresu email. Walidator wpierw dzieli adres email na część lokalną oraz na nazwę serwera, a następnie próbuje sprawdzić je w oparciu o znane specyfikacje dla adresów email oraz adresów serwerów.

Podstawowe użycie

Poniżej podstawowy przykład użycia:

    <?php
    require_once 'Zend/Validate/EmailAddress.php';
    $validator = new Zend_Validate_EmailAddress();
    if ($validator->isValid($email)) {
        // adres email wygląda na prawidłowy
    } else {
        // adres email jest nieprawidłowy; wyświetl powody
        foreach ($validator->getMessages() as $message) {
            echo "$message\n";
        }
    }

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

Części adresu email

Zend_Validate_Email dopasuje każdy prawidłowy adres email zgodny ze specyfikacją RFC2822. Na przykład, poprawnymi adresami będą `bob@domain.com`, `bob+jones@domain.us`, `"bob@jones"@domain.com` oraz `"bob jones"@domain.com` Niektóre przestarzałe formaty adresów email nie są obecnie walidowane (np. zawierające znak powrotu karetki, albo znak "\" w adresie email).

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

Część adresu email zawierająca adres serwera jest walidowana za pomocą Zend_Validate_Hostname. Domyślnie akceptowane są jedynie adresy DNS w stylu `domain.com`, ale jeśli chcesz, to możesz włączyć akceptowanie także adresów IP oraz adresów lokalnych. Aby to zrobić, musisz utworzyć instancję Zend_Validate_EmailAddress przekazując parametr określający typ adresów jakie chcesz akceptować. Więcej szczegółów znajdziesz w Zend_Validate_Hostname, jednak poniżej możesz zobaczyć przykład akceptowania zarówno adresów DNS jak i adresów lokalnych:

    <?php
    require_once 'Zend/Validate/EmailAddress.php';
    $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);
    if ($validator->isValid($email)) {
        // adres email wygląda na prawidłowy
    } else {
        // adres email jest nieprawidłowy; wyświetl powody
        foreach ($validator->getMessages() as $message) {
            echo "$message\n";
        }
    }

Poprzedni | Początek rozdziału | Następny
27.3. Pisanie walidatorów | Spis treści | 27.5. Walidacja adresów serwerów