2017-09-12 1 views
0

Ich frage nach einer E-Mail-Adresse über ein Formular auf meiner Website. Ich möchte die Domain validieren, damit ich gefälschte Einträge, die ich gerade erhalte, verhindern kann. Ich verwende den folgenden Code, aber es scheint Dosis nicht zu arbeiten:E-Mail-Domain-Validierung in PHP auf Windows

function myCheckDNSRR($hostName, $recType = '') 
{ 
    if(!empty($hostName)) { 
     if($recType == '') $recType = "MX"; 
     exec("nslookup -type=$recType $hostName", $result); 
     // check each line to find the one that starts with the host 
     // name. If it exists then the function succeeded. 
     foreach ($result as $line) { 
      if(eregi("^$hostName",$line)) { 
       echo "valid email"; 
      } 
     } 
     // otherwise there was no mail handler for the domain 
     echo "invalid email"; 
    } 
    echo "invalid EMAIL"; 
} 

Ich bin neu in diesem und verwendet diesen Code aus here

Bitte leite mich. Vielen Dank.

+1

_it Dosis nicht zu work_ scheinen Was Fehler bekommen Sie? –

+0

Warum nicht * senden * eine E-Mail mit einem Bestätigungslink wie der Rest der Welt? –

+0

Keine Fehler als spezifisch. Die E-Mail-Adresse, die vom Benutzer stammt, wird jedoch nicht überprüft. –

Antwort

1

Ich denke, Sie können einfach so pingen.

function myCheckDNSRR($email_address) 
    { 
     if(!empty($email_address)) { 
      $hostName=strstr($email_address, '@'); 
      $hostName=str_replace("@","www.",$hostName); 
      exec("ping " . $hostName, $output, $result); 
      if ($result == 0){ 
       echo "valid email"; 
      } 
      else{ 
       echo "invalid email"; 
      } 
    } 
} 

nennen es wie

echo myCheckDNSRR("[email protected]"); 
+0

Immer noch nicht herunterladen Sir. @ Error404 –

+0

Welchen Fehler bekommst du? –

+0

Kein Fehler. Aber die E-Mail-Adresse ist nicht gültig –

0

eine Validierung lib wie https://docs.zendframework.com/zend-validator/validators/email-address/

$validator = new Zend\Validator\EmailAddress(); 

if ($validator->isValid($email)) { 
    // email appears to be valid 
} else { 
    // email is invalid; print the reasons 
    foreach ($validator->getMessages() as $message) { 
     echo "$message\n"; 
    } 
} 

Verwenden Sie zum Speichern eines E-Mail-Link-Code eine Tabelle in der DB erstellen. Wenn sich jemand registriert, markieren Sie den Benutzer als nicht aktiviert, bis er auf den Link in der E-Mail klickt. Auf diese Weise wissen Sie, dass es real ist und den Benutzer aktivieren kann.

+0

Die Website ist im Kern PHP Sir. Es wird verursachen und ausstellen es nicht? –

+0

Das ist kein Problem. Sie können die Komponenten ohne das gesamte Framework verwenden :-) Laden Sie einfach die lib herunter, und fordern Sie in der Klasse, die Sie brauchen! – delboy1978uk