Sven Rautenberg: E-Mailadresse überprüfen ob gültig !!

Beitrag lesen

Aloha!

if(!empty($email)) {
   // domain pruefen
  if (!(strpos($email, "@") > 2) || !(strrpos($email, ".") > (strpos($email, "@") + 2)) || !(strlen(strrchr($email, ".")) >= 2) || !checkdnsrr (substr(strrchr($email, '@'), 1), 'MX')) {
         $fehlerausgabe .= "<li>keine gültige Domain für die e-Mailadresse angegeben";

Ganz trickreich, einfach den Nameserver abzufragen, ob er einen MX-Record für die Adresse enthält. Bringt aber letztendlich auch noch keine Gewißheit, ob die Mailadresse an sich existiert, sondern stellt nur sicher, dass niemand nicht-existente Domains eingegeben hat. Aber selbst wenn man sich heutzutage vertippt und statt t-online.de dummerweise t-offline.de eingibt, findet sich ein Server, der Mails bereitwillig entgegennimmt. :)

}
     if (!(strcspn($email, "!"§$%&/()=?{[]}\üöäß*';:,") == strlen($email))) {
         $fehlerausgabe .= "<li>ungültige Zeichen (z.B. §, $, %,&, /, (, (, ä, ö, ä) in der e-Mail Adresse";
     }
}

Die Suche nach ungültigen Zeichen ist aber leider falsch. Ein " ist ein gültiges Zeichen, es kann den Usernamen einklammern, um darin z.B. Leerzeichen zu erlauben. Schätzungsweise sind alle druckbaren ASCII-Zeichen bis 127 erlaubt, sich in einem so umschlossenen Usernamen zu befinden. Ok, das ist eher ungewöhnlich, aber nicht ausgeschlossen - und ärgerlich für denjenigen, dessen richtige EMail-Adresse als falsch zurückgewiesen wird.

- Sven Rautenberg