eMail - Check auf gültige eMail!
Stefan
- php
0 Cheatah0 Sven Rautenberg0 Christian Kruse0 Cheatah
Hallo,
ich überprüfen in ein Formular eingegebene eMail-Adressen mit:
if (ereg("[1]+(.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+.)+([a-zA-Z]{2,3})$", $email))
{
echo "Richtig";
}
else
{
echo "Falsch";
}
Das klappt auch prima. Nur leider werden auch gültige eMail-Adressen in der Form NameIch.@gmx.de (Bei gmx gibt es sowas!!!) als falsch beurteilt - das liegt wohl an dem Punkt vor dem @.
Was muss ich ändern, damit das auch damit funktioniert?
Danke für Eure Hilfe,
Stefan
_a-zA-Z0-9- ↩︎
Hi,
if (ereg("[1]+(.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+.)+([a-zA-Z]{2,3})$", $email))
Das klappt auch prima.
nein, tut es nicht. Übrigens gab es das Problem hier schon n mal, wie Dir die Archiv-Suche gerne verrät.
Nur leider werden auch gültige eMail-Adressen in der Form NameIch.@gmx.de (Bei gmx gibt es sowas!!!) als falsch beurteilt - das liegt wohl an dem Punkt vor dem @.
Insbesondere liegt es daran, dass ein Punkt vor dem @ eben _nicht_ gültig ist, genau wie eine mit zwei Punkten hintereinander. Hingegen wäre "diese m@il-Adresse ist sinnfrei, aber richtig!"@irgendwo.de technisch in Ordnung - ob sie erreichbar ist, sagt das jedoch nicht aus.
Was muss ich ändern, damit das auch damit funktioniert?
GMX darüber informieren, dass sie ungültige Adressen zulassen.
Cheatah
_a-zA-Z0-9- ↩︎
Moin!
ich überprüfen in ein Formular eingegebene eMail-Adressen mit:
if (ereg("[1]+(.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+.)+([a-zA-Z]{2,3})$", $email))
{
echo "Richtig";
}
else
{
echo "Falsch";
}
Das klappt auch prima.
Das glaubst leider nur du.
Nur leider werden auch gültige eMail-Adressen in der Form NameIch.@gmx.de (Bei gmx gibt es sowas!!!) als falsch beurteilt - das liegt wohl an dem Punkt vor dem @.
Eben...
Was muss ich ändern, damit das auch damit funktioniert?
Entweder prüfst du die Syntax der EMail-Adressen wirklich vollständig (der Aufbau des passenden Regulären Ausdrucks umfaßt mindestens 20 Programmzeilen), oder du nimmst sowas wie dies hier:
if (ereg(".+@.+..{2,}",$email)
Das prüft im Grunde genommen, ob in der Adressangabe ein @ enthalten ist, und im Domainteil ein Punkt. Die Mindestlänge einer Mailadresse beträgt darüber hinaus 6 Zeichen.
Dein bisheriger Ausdruck hat zum Beispiel das Problem, dass man .info, .name und .museum-Mailadressen nicht eingeben darf. Du läßt nur zwei- oder dreibuchstabige Top-Level-Domains zu. In der Zukunft ist aber zu erwarten, dass noch viel mehr TLDs entstehen werden und nicht nur maximal drei Buchstaben enthalten. Du prüfst aber beispielsweise nicht, ob die angegebene Domain tatsächlich existiert. Insofern kann es dir dann auch egal sein, ob du eine nicht-existente dreibuchstabige Domain kriegst, oder eine zwanzigbuchstabige Domain.
- Sven Rautenberg
_a-zA-Z0-9- ↩︎
Hallo,
ich überprüfen in ein Formular eingegebene eMail-Adressen mit:
if (ereg("[1]+(.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+.)+([a-zA-Z]{2,3})$", $email))
Das klappt auch prima. Nur leider werden auch gültige eMail-Adressen in der
Form NameIch.@gmx.de (Bei gmx gibt es sowas!!!) als falsch beurteilt - das
liegt wohl an dem Punkt vor dem @.
Das sollte auch eine valide EMail sein.
Was muss ich ändern, damit das auch damit funktioniert?
Setze einen '.?' in die zweite Klammer:
[2]+(.[_a-zA-Z0-9-]+.?)*@([a-zA-Z0-9-]+.)+([a-zA-Z]{2,3})$
Aber lies mal
http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/index.html
zu dem Thema. Der RegEx ist IMHO etwas genauer.
Gruesse,
CK
Hi,
[...] gültige eMail-Adressen in der Form NameIch.@gmx.de [...]
Das sollte auch eine valide EMail sein.
nein.
Cheatah