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

Weryfikacja adresu e-mail w PHP

Własna funkcja checkdnsrr()

Funkcja customCheckDnsrr() jest klasycznym przykładem rozwiązania do zaimplementowania oczekiwanej funkcjonalności checkdnsrr() na platformy windowsowskie. Jest to bardzo często stosowane w wielu skryptach. No to czas na kod:

function customCheckDnsrr($host,$recType='') {
 if(!empty($host)) {
  if($recType=='') $recType="MX";
  exec("nslookup -type=$recType $host",$output);
  foreach($output as $line) {
   if(preg_match("/^$host/", $line)) {
    return true;
   }
  }
  return false;
 }
 return false;
}

Nasza wersja funkcji checkdnsrr() działa na zasadzie tworzenia systemowego polecenia, dostępnego w systemach Windows znanego jako nslookup. Przypomina ono funkcjonalnością działanie checkdnsrr i jest bardzo przydatne do uzyskania tego samego wyniku. W naszym skrypcie używamy funkcji nslookup przez wywołanie funkcji PHP exec(), która jest jedną z metod na wywołanie polecenia systemowego z poziomu PHP. Wynik jest w postaci tabeli w parametrze $output.

Kiedy funkcja nslookup jest wywołana, wyszukuje ona odpowiedniego wejścia dla podanej domeny w DNSie. Jeśli powiedzie się to wyszukiwanie zostanie zwrócony wynik podobny do poniższego:

Server:  ns1.infoar.net
Address:   200.80.203.242
calop.com.ar   MX preference = 10, mail exchanger = mail.infoar.net

Aby określić, czy odpowiedni uchwyt maila dla tej domeny istnieje, funkcja w pętli przechodzi przez wszystkie linie zwrócone w wyniku szukając linii zaczynającej się od szukanego hosta. Jeśli linia zostanie znaleziona, wtedy funkcja zwróci true. Jeśli nie to oczywiście false.

Oto kod, w którym używamy funkcji customCheckDnsrr():

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(!customCheckDnsrr($domain)){
   return false;
  }
  return true;
 }
 return false;
}

Ten fragment kodu jest niemal identyczny do tego, którego używaliśmy z checkdnsrr(). Został tylko zmieniony w jednym miejscu, aby wykorzystywał przez nas zdefiniowaną wcześniej funkcję.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (0)
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