Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Weryfikacja adresu e-mail w PHP

Sprawdzanie poprawności formatu adresu e-mail.

Pierwszym krokiem, aby sprawdzić adres jest sprawdzenie czy ma on odpowiedni format. Jeśli jesteś doświadczonym programistą, możesz przeskoczyć ten opis. Jednakże w celu podania pełnego wyjaśnienia zaczniemy od zdefiniowania pierwszej, sprawdzającej funkcji, która wykorzystuje zaletę wbudowanego w silnik PHP wsparcia dla wyrażeń regularnych:

function  checkEmail($email) {
 if (!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) {
  return false;
 }
 return true;
}

Nic niezwykłego, prawda? Prościutka funkcja checkEmail() sprawdza format adresu e-mail użytkownika przez zakodowanie przy pomocy wyrażeń regularnych jego standardowego formatu. Funkcja preg_match() wyszukuje kwerend pasujących do wzorca e-maila podając ciąg $email przekazanego jako parametr. Jeśli znaleziono ciąg pasujący do wzorca funkcja zwraca wartość logiczną true. W przeciwnym wypadku false.

Krótka analiza wyraźnie pokazuje, że wiele niepoprawnych adresów e-mail przekazanych jako argument ciągle będzie pasować do wzorca. To spowoduje zwrócenie wartości true i uznanie adresu przez skrypt za poprawny. Chociaż może się okazać niemożliwym wyłapanie wszystkich niepoprawnych adresów w ten sposób to jednak takie rutynowe sprawdzanie ze zdefiniowanym formatem może usprawnić ogólny proces walidacji.

Kiedy jednak ta funkcja przestaje być wystarczająca, zmuszeni jesteśmy poszukać innej metody polepszenia naszego procesu walidacji. Kolejnym krokiem jest sprawdzenie, czy adres e-mail należy do jakiejś istniejącej domeny przez upewnienie się, czy istnieje rekord rejestracji domeny dla domeny, którą podał użytkownik. Jak to osiągniemy? Wyjaśni to kolejna sekcja.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (6)
Weryfikacja adresu e-mail w PHP
Czwartek 29 Marzec 2012 12:17:49 pm - pp-layouts <machine_at_nisza.org>

Wiedziałem, że w artykule będzie sposób 1 regexem. To zło, ten regex jest nieprawdopodobnie wolny, co wychodzi, jak chce się ten sam algorytm użyć do walidacji emaila po stronie klienta podczas wpisywania. Rozwiązanie jest banalnie proste - dzielimy e-mail po małpie na 2 części i walidujemy osobno domenę (prostsze reguły) i login (troszkę trudniejsze reguły). Ta metoda jest wystarczająco szybka nawet uruchamiana po każdym naciśnięciu klawisza w IE7.

Data Filtering Extension
Sobota 16 Styczeń 2010 10:15:55 pm - Meares <meares_at_mixbox.pl>

W PHP5.2 jest domyślnie aktywne rozszerzenie "Data Filtering", które pozwala na walidację wielu rzeczy, w tym adresu e-mail. Adres e-mail można sprawdzić w następujący sposób:
<?php
filter_var('admin@przyklad.pl', FILTER_VALIDATE_EMAIL);
?>

walidacja
Czwartek 16 Kwiecień 2009 1:09:39 am - x10d <djek_at_toya.net.pl>

@walidacja/rozny:
usun wszystkie spacje z wyrazenia preg_match, to zadziala:>

walidacja
Piątek 04 Styczeń 2008 4:33:12 pm - rozny <rozny_at_tlen.pl>

a mi to to nie dziala... jakiego meila bym nie wpisal wyswietla invalid email address... :(

validacja
Niedziela 20 Maj 2007 11:55:19 am - Prym

Oczywiście masz rację że najprościej jest wysłać maila z kodem aktywacyjnym. ale są sytuacje w których nie chodzi o zakładanie konta ale o np umowę - gość wprowadza dane łącznie ze swoim adresem mailowym który jest wymagany do kontaktu i to nawet nie dla mnie ten validator ale niech sie klient kropnie w swoim mailu - a juz kilka razy widzialem jak ludzie robia spacje nie tam gdzie trzeba a potem jest krzyk ze nie ma odzewu na zapytanie czy inną sprawę.

Dlatego napisze genialny artykuł :) zwłaszcza validacja domen mnie polozyła nie wiedzialem ze az tyle sposobów jest na to.

Komentarz ?
Poniedziałek 26 Luty 2007 8:58:02 am - puciek

A nie prosciej po prostu wyslac email na podany adres z kluczem aktywacyjnym ?
100% skuteczna metoda

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System