webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Weryfikacja adresu e-mail

autor: Mateusz Bogolubow, ostatnia modyfikacja: 2007-02-23

szukaj: weryfikacja adresu e-mail weryfikacja adresu e-mail sprawdzanie poprawności adresu e-mail sprawdzanie poprawności adresu e-mail PHP PHP

Aby sprawdzić poprawność adresu e-mail możemy skorzystać z dobrodziejstw wyrażeń regularnych. Funkcja weryfikująca ValidEmail()(zwraca TRUE gdy adres jest poprawny oraz FALSE gdy tak nie jest) powinna wyglądać mniej więcej tak:

function  ValidEmail($email) {
 if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$" , $email)) {
  return false;
 }
 return true;
}

W celu sprawdzenia jakiegoś adresu e-mail piszemy:

if (ValidEmail("kowalski@wp.pl"))  echo "Poprawny adres e-mail"; 
  else  echo "Nie poprawy adres e-mail"; 

Niestety ta metoda nie zawsze się sprawdza. Możemy skorzystać z funkcji verifyEmail(), która pochodzi z FAQ grupy dyskusyjnej pl.comp.lang.php. Funkcja ta nie tylko sprawdza poprawność wpisanego adresu e-mail, ale również czy domena istnieje i czy posiada prawidłowy rekord MX.

function verifyEmail($email) {

$wholeexp = '/^(.+?)@(([a-z0-9\.-]+?)\.[a-z]{2,5})$/i';
$userexp = "/^[a-z0-9\~\\!\#\$\%\&\(\)\-\_\+\=\[\]\;\:\'\"\,\.\/]+$/i";

if (preg_match($wholeexp, $email, $regs)) {
  $username = $regs[1];
  $host = $regs[2];

  if (checkdnsrr($host, MX)) {
    if (preg_match($userexp, $username)) {
    return true;
    } else { return false; }
  } else { return false; }
} else { return false; }

}

Trzeba jednak wziąć pod uwagę fakt, że funkcja checkdnsrr() nie jest zaimplementowana na platformie Windows, gdzie funkcja ta nie będzie działać poprawnie.

Mateusz Bogolubow

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org