Stefan: eMail - Check auf gültige eMail!

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


  1. _a-zA-Z0-9- ↩︎

  1. 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


    1. _a-zA-Z0-9- ↩︎

  2. 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


    1. _a-zA-Z0-9- ↩︎

  3. 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


    1. _a-zA-Z0-9- ↩︎

    2. _a-zA-Z0-9- ↩︎

    1. Hi,

      [...] gültige eMail-Adressen in der Form NameIch.@gmx.de [...]
      Das sollte auch eine valide EMail sein.

      nein.

      Cheatah