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

Weryfikacja adresu e-mail w PHP

Użycie getmxrr() w celu walidacji

Możliwe jest zastosowanie funkcji PHP getmxrr() w celu dokonania walidacji domeny z adresu e-mail podobną jaką otrzymaliśmy stosując checkdnsrr(). Ta funkcja pobiera rekord MX odpowiadający podanej nazwie hosta.Prototyp tej funkcji:

int getmxrr ( string hostname, array mxhosts [, array weight]);

Prezentując ta sieciową funkcję nietrudno dostrzec, że moglibyśmy przepisać naszą funkcję checkEmail() wykorzystując getmxrr() zamiast checkdnsrr() przy walidacji domeny adresu e-mail. Ulepszona wersję podajemy poniżej:

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

Odwołujemy się do niej w ten sposób:

$email = trim($_POST['email']);   
if(!checkEmail($email)) {  
echo 'Invalid email address!';
}
else {
 echo 'Email address is valid';
}

Ten kod wygląda bardzo podobnie do poprzedniego, w którym użyliśmy checkdnsrr(). Jest tylko jedna, subtelna różnica polegająca na zawarciu getmxrr() w funkcji checkEmail(). To bardzo proste i zarazem dobre rozwiązanie. Możemy tylko wyrazić wdzięczność, bo zestaw funkcji sieciowych w PHP jest nieocenionym narzędziem w przypadku walidacji domen, do których przynależą adresy e-mail.

Jak dotąd, na początku zdefiniowaliśmy sobie funkcje, sprawdziliśmy format adresu e-mail na podstawie wzorca i wreszcie sprawdziliśmy, czy domena adresu rzeczywiście istnieje. Dokładnie rzecz ujmując to rozwiązanie ciągle nie jest kompletne, ponieważ nie wiemy nadal czy nazwa użytkownika jest poprawna. Jak możemy rozwiązać ten problem?

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-2020 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System