Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Überprüfung der E-Mail in PHP?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Überprüfung der E-Mail in PHP?

    Hallo an alle, die auf diesen Thread stoßen!

    Wie kann ich für mein Formular in HTML eine Überprüfung auf Korrektheit der eingegeben E-Mail Adresse in PHP realisieren?

    Die Eingabe soll auf folgende Merkmale überprüft werden:
    - Vorhandensein des @-Zeichens.
    - Nach dem @ sollte irgendwo(!) ein Punkt stehen.
    - Nach dem Punkt sollte die Länderendung auch mindestens 2 Zeichen lang sein (z.b. "de")
    - Mindestanzahl von generell 3 Zeichen vor dem @ und
    - Mindestanzahl von generell 2 Zeichen nach dem @.

    Wäre eine Ausgabe mit Text möglich, welches Kriterium nicht erfüllt wurde, wenn ja, wie?

    Vielen Dank schon mal für alle Antworten. Hoffentlich kann mir jemand helfen!


  • #2
    Code:
    function isValidEmail($email){ 
        return filter_var($email, FILTER_VALIDATE_EMAIL);
    }
    Code:
    function checkEmail($email) {
      if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])
      ↪*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",
                   $email)){
        list($username,$domain)=split('@',$email);
        if(!checkdnsrr($domain,'MX')) {
          return false;
        }
        return true;
      }
      return false;
    Diese sollten im ersten das Format prüfen, im zweiten den MX-Record, ob dieser existiert.
    Google - Ergebnis 3 und 4

    Kommentar


    • #3
      Edith: kaguchan war schneller
      Standards - Best Practices - AwesomePHP - Guideline für WebApps

      Kommentar


      • #4
        auf Korrektheit der eingegeben E-Mail Adresse
        Tataaa... http://php-de.github.io/jumpto/stand...il-validation/
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          [MAN]filter_var[/MAN] mit FILTER_VALIDATE_EMAIL ist wohl am zweckdienlichsten. Die genauen Filterregeln sind bestimmt irgendwo beschrieben.

          Eine Ausgabe wo der Fehler liegt gibts damit nicht, aber das braucht idR doch auch niemand, oder? Entweder ich gebe eine Fake-Adresse an, dann weiß ich Bescheid, dass nicht klappt sobald irgendeine Meldung kommt, das was nicht passt oder ich muss die Adresse ohnehin nochmal überprüfen.

          Kommentar


          • #6
            Zitat von Tropi Beitrag anzeigen
            [MAN]filter_var[/MAN] mit FILTER_VALIDATE_EMAIL ist wohl am zweckdienlichsten. Die genauen Filterregeln sind bestimmt irgendwo beschrieben.
            http://php-de.github.io/jumpto/stand...ion/#filtervar

            Vorsicht... Mittlerweile Übliche/erlaubte Umlautdomains fallen damit jedoch durch (zB müller.de) - siehe den Artikel oben, auch darüber steht da etwas.
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Wenn ich auf Nummer sicher gehen will und zum Beispiel eine gültige E-Mail Adresse auch mit Umlauten treffsicher als richtig oder falsch bestimmten will, wie mache ich das dann?

              Die Sache mit dem MX-Record ist schon eine sehr gute Idee. Aber um wirklich den Kriterien von oben zu entsprechen, könnte man doch auch die Punkte stupide einzeln überprüfen lassen mit einer verschachtelten if-else-Bedingung?
              Also ob das "@" da ist, ob ein Punkt vorhanden ist, ob die vorgegebene Anzahl an Mindestzeichen vor und nach dem "@" eingehalten wurde usw...

              Wird dann zwar ein etwas aufgeblähter Code, aber ein interessanter Ansatz, das Problem zu lösen.

              Wie würdet ihr das so verwirklichen?

              Vielen Dank für die Hilfe!

              Kommentar


              • #8
                Wenn ich auf Nummer sicher gehen will und zum Beispiel eine gültige E-Mail Adresse auch mit Umlauten treffsicher als richtig oder falsch bestimmten will, wie mache ich das dann?
                Genau das steht eigentlich in dem von mir verlinkten Arikeln, die Varianten mit allen Vor und Nachteilen.. lesen musst ihn selbst.

                zB so:
                http://php-de.github.io/jumpto/stand...usdrcken-regex

                oder halt über vorherige Konvertierung in Punycode: http://php-de.github.io/jumpto/idna/

                Und nochmals erwähnt (!):

                Vorweg sei an dieser Stelle erwähnt, dass eine Prüfung auf tatsächliche Existenz einer E-Mail-Adresse auf diesem Weg nicht möglich ist. Die nachfolgenden Ansätze dienen lediglich zur Feststellung ob die grundlegenden formellen Rahmenbedingungen erfüllt werden
                LG
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Zitat von XardasLehrling Beitrag anzeigen
                  Aber um wirklich den Kriterien von oben zu entsprechen, könnte man doch auch die Punkte stupide einzeln überprüfen lassen mit einer verschachtelten if-else-Bedingung?
                  Also ob das "@" da ist, ob ein Punkt vorhanden ist, ob die vorgegebene Anzahl an Mindestzeichen vor und nach dem "@" eingehalten wurde usw...

                  Wird dann zwar ein etwas aufgeblähter Code, aber ein interessanter Ansatz, das Problem zu lösen.
                  Ja, könnte man. Aber wenn ich dir sage das meine E-Mail "bill.gates@microsoft.com" ist, wirst du auch schnell erkennen, dass das falsch ist, obwohl sie formell gültig ist. Als User will ich meine E-Mail-Adresse angeben - und die Gültigkeit dieser ist damit ja quasi schon bewiesen. Ein "Tipp" in Richtung gültiger E-Mail-Adresse ist da ja umsonst.

                  Eine Lösung für Umlaute ist bei hausls Link dabei. (Danke übrigens für den Hinweis, hausl.)

                  Kommentar


                  • #10
                    Genau so ist es, daher kann(!) diese "lose" Eingabeprüfung nur ein "Helferlein" sein für grobe Tippfehler, alles andere muss man mittels double-opt-in erledigen, so seh ich das zumindest.

                    (Danke übrigens für den Hinweis, hausl.)
                    Bitte. Dieser Beitrag dazu http://www.php.de/wiki-diskussionsfo...lidierung.html war ürigens dann irgendwie der Stein des Anstoßes zur Wissensammlung, die es davor noch nicht gab
                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Habs jetzt hinbekommen, vielen Dank für die Denkanstöße!
                      Thread wird jetzt als erledigt markiert...

                      Kommentar

                      Lädt...
                      X