2012-03-29 3 views
-2

Ich möchte eine E-Mail-Validierung des Typs '[email protected]' validieren. Sollte eine Fehlermeldung angezeigt werden, wenn sie einen ungültigen Domänennamen eingeben. Wäre sehr dankbar für Ihre Hilfe.Ich möchte die E-Mail-Adresse abhängig von der eingegebenen Domain validieren. Ich suche nach der letzten Domain als .com

+1

Es gibt nichts Ungültiges darüber; "xyz.com.com" ist eine vollkommen gültige Domain. –

+0

JavaScript oder PHP ?! – ThiefMaster

+3

siehe Antwort auf diese: http://stackoverflow.com/questions/46155/validate-email-address-in-javascript – ChelseaStats

Antwort

1

Ich finde, dass der Versuch, eine E-Mail-Adresse gründlich zu validieren, zu viel Arbeit ist, und ich neige dazu, etwas in der Form/\ A [^ @] + @ [^ @] + \ z/zu verwenden. In beiden Fällen müssen Sie noch eine Bestätigungs-E-Mail senden, um sicherzustellen, dass die Adresse verwendet wird.

Siehe auch this page about writing a regex for an e-mail address.

Darüber hinaus denke ich, dass in vielen Fällen, in denen ein Benutzer eine E-Mail-Adresse falsch schreibt, sie immer noch eine Adresse im gültigen Format eingeben (darüber hinaus kann ein böswilliger Benutzer immer zB [email protected] schreiben und erhalten weg mit ihm)

0

Es ist sehr einfach, Benutzernamen bis @ Operator zu überprüfen, aber ich denke, wir können nicht prüfen, Domain-Name ist gültig oder nicht. weil du heute Tausende von Domains kennst. Morgen wird jede Organisation oder irgendetwas anderes mehr Domänen hinzufügen, und wie können wir danach suchen?

Die einzige Sache ist, dass wir die Länge einschränken können.

Wenn ich falsch liege, bitte korrigieren Sie mich .. wäre dankbar für Hilfe..Danke.

+0

1 Sache, die ich vergessen habe, ist, dass wir E-Mails mit regulären Ausdrücken überprüfen können. Ich suche auch nach Domain-Namen ... ich habe keine Lösung für das obige Problem gefunden. wenn jemand weiß, wie man das löst, dann bitte helfen ... –

+0

var reg = /^[A-Z0-9._][email protected][A-Z0-9.]+[A-Z]{2,3}/i; ist mein regulärer Ausdruck für E-Mails zu überprüfen ... bis jetzt, ich suche nach Domain-Namen ... hoffe auf + ve Antwort ... danke –

1

Ich denke, dass Sie zuerst E-Mail durch regexp validieren und dann DNS abfragen müssen, um festzustellen, ob der Host-Teil der E-Mail-Adresse gültig ist. Hier ist ein Beispielcode, der diese checks macht.

/** 
* Checks validity of given email addess 
* Also checks domain name for validity via DNS 
* 
* @param string $email 
* @return boolean 
*/ 
function checkEmailValididty($email){ 
    $isValid = false; 
    if(filter_var($email, FILTER_VALIDATE_EMAIL)){ 
     $host = substr($email, strpos($email, '@') + 1); 

     if(function_exists('getmxrr') and getmxrr($host, $mxhosts) != false){ 
      $isValid = true; 
     } 
     elseif(gethostbyname($host) != $host){ 
      $isValid = true; 
     } 
    } 
    return $isValid; 
} 
+1

Obwohl dies cool scheint, sagen die Dokumente für getmxrr "Hinweis: Diese Funktion sollte nicht Für die Zwecke der Adressverifizierung werden nur die Mailexchanger verwendet, die in DNS gefunden werden, jedoch gemäß »RFC 2821, wenn keine Mail Exchanger aufgelistet sind, sollte Hostname selbst als einziger Mail Exchanger mit einer Priorität von 0 verwendet werden.« Hat jemand irgendwelche Gedanken dazu - ich habe getmxrr nicht verwendet, aber es sieht potentiell sehr nützlich aus. –

0

Ok, ich bin nicht sicher, warum die meisten hier diese überspringt, aber es gibt eine Funktion namens filter_var, die einen Parameter empfangen kann, um zu überprüfen, ob der String eine gültige E-Mail ist. Es überprüft nicht, ob die Domäne existiert oder etwas anderes. Auch here können Sie die verfügbaren Filter finden, die Sie für die Validierung verwenden können.

Wenn Sie Domänen filtern müssen, gibt es eine einfache Möglichkeit, die Domäne aus der E-Mail zu extrahieren und diejenigen, die Sie nicht möchten, zu verbieten.

Sie können leicht überprüfen, ob die angeforderte Domäne existiert, wenn Sie das möchten.

Verwandte Themen