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