Trade Republic - Provisionsfrei Aktien handeln
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: E-Mail Validierung und neue gTLDs

    idontcare

    • Neu im Forum
    • Beiträge: 3
    Re: E-Mail Validierung und neue gTLDs
    Antwort #15 am: 10. Juli 2014, 12:03:46
    auch wenn man nur die DNS prüfung machen will, bleibt es doch dabei das die aktuelle Funktion geändert werden muss, da eben aktuell vorab die syntax validierung läuft die ungenügend ist. Vorher die Adresse auf korrekte Syntax zu prüfen finde ich aber durchaus weiterhin angebracht.

    Ansich muss man ggf. fürs validieren ja nichtmal zusätzliche Pakete installieren, siehe: http://www.php.net/manual/en/filter.filters.php, alternativ nimmt man eben sowas wie das o.g. is_email.

    Zusätzlich sollte IDN unterstützt werden, sofern das passende php-modul nicht verfügbar ist( http://www.php.net/manual/en/ref.intl.idn.php) nimmt man halt sowas wie: http://phlymail.com/en/downloads/idna-convert.html

    Und dann könnte die Funktion z.B. so aussehen:
    Code: PHP  [Auswählen]
    require_once(DIR_WS_INCLUDES.'idna/idna_convert.class.php');
    function xtc_validate_email($email) {
            //BOF - web28 - 2011-07-31 - SQL nullbyte injection fix 16.02.2011
            if (strpos($email,"\0")!== false) {return false;}
            if (strpos($email,"\x00")!== false) {return false;}
            if (strpos($email,"\u0000")!== false) {return false;}
            if (strpos($email,"\000")!== false) {return false;}
            //EOF - web28 - 2011-07-31 - SQL nullbyte injection fix 16.02.2011
           
            // ... idn convert
            $parts = explode('@',$email);
            if(count($parts)>2)
            {
                    return false;
            }
           
            $IDNA = new idna_convert();
            $parts[1] = $IDNA->encode($parts[1]);
            $email = implode('@',$parts);
           
            if( $email !== filter_var($email, FILTER_SANITIZE_EMAIL) )
            {
                    return false;
            }
           
            $valid_address = filter_var($email, FILTER_VALIDATE_EMAIL);

            if ($valid_address && ENTRY_EMAIL_ADDRESS_CHECK == 'true') {
                    $domain = explode('@', $email);
                    if (!checkdnsrr($domain[1], "MX") && !checkdnsrr($domain[1], "A")) {
                            $valid_address = false;
                    }
            }
       
            return $valid_address;
    }
     

    ein paar testfälle zum ausprobieren:
    Code: PHP  [Auswählen]
    $testCases = array(
            'hans.wurst@telekom.de',
            "\0nullbyte@telekom.de",
            'dieter.wurst@telecomitalia.it',
            'hans.peter.wurst@bmw.international',
            'mr.muhammed@healthcare.xn--xkc2dl3a5ee0h', #.இந்தியா
            'mr.muhammed@healthcare.இந்தியா', #.இந்தியா
            'personaldienst@allianz.versicherung',
            'personaldienst@allianz@versicherung.de',
    );
    foreach($testCases as $email)
    {
            if (xtc_validate_email($email)) { printf( "%s is a valid email xtc_validate_email address".PHP_EOL, $email); }
            else { printf( "%s is a _NOT_ valid email xtc_validate_email address".PHP_EOL, $email); }
    }
     
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware

    kaisa

    • Schreiberling
    • Beiträge: 366
    Re: E-Mail Validierung und neue gTLDs
    Antwort #16 am: 16. November 2014, 13:11:18
    Die Debatte wird mir zu albern. Ich ziehe als Fazit:

    Es gibt neue TLD, und es werden noch mehr. Also ist es sinnvoll, die Domain per DNS abzuprüfen, was per Dreizeiler problemlos möglich ist.

    Hast du den Dreizeiler zur Hand? Ich finde es sehr sinnvoll. Noch besser vielleicht den Email-Server zu kontaktieren, ob die Emailadresse tatsächlich funktioniert?

    Matt

    • Experte
    • Beiträge: 4.241
    Re: E-Mail Validierung und neue gTLDs
    Antwort #17 am: 16. November 2014, 15:47:39
    Hast du den Dreizeiler zur Hand?

    3. Post. Was spricht eigentlich dagegen den ganzen Thread zu lesen bevor man fragt?

    Noch besser vielleicht den Email-Server zu kontaktieren, ob die Emailadresse tatsächlich funktioniert?

    Ah. Und der sollte dir das weshalb verraten? Damit das auch jeder dahergelaufene Spammer machen kann?

    Guenter59

    • Viel Schreiber
    • Beiträge: 1.485
    Re: E-Mail Validierung und neue gTLDs
    Antwort #18 am: 16. November 2014, 16:29:46
    Hi
    filter_var() mit Punycode wäre auch noch eine Möglichkeit.
    Eventuell auch mit zusätzlichem DNS-Test.
    Aber im Endeffekt wird man nie 100% wissen, ob es diese Email wirklich gibt und diese auch dem " Nutzer " gehört.
    Deshalb denke ich, daß es am sinnvollsten ist nur auf die Plausibilität (korrekte Syntax ) zu prüfen.
    Ich lasse mich aber gerne eines Besseren belehren
    GMS

    kaisa

    • Schreiberling
    • Beiträge: 366
    Re: E-Mail Validierung und neue gTLDs
    Antwort #19 am: 18. November 2014, 13:45:38
    Hast du den Dreizeiler zur Hand?

    3. Post. Was spricht eigentlich dagegen den ganzen Thread zu lesen bevor man fragt?

    Noch besser vielleicht den Email-Server zu kontaktieren, ob die Emailadresse tatsächlich funktioniert?

    Ah. Und der sollte dir das weshalb verraten? Damit das auch jeder dahergelaufene Spammer machen kann?
    1. Ich hatte zwar den Post überflogen, aber angenommen, dass du den Dreizeiler gepostet hättest.
    2. Ich nahm an, dass Mailserver einzelne Abfragen erlauben, aber massenweise blockieren.

    Ok, Fehler auf meiner Seite, aber ich wollte zur Lösung des Problems beitragen, da finde ich deine Reaktion überzogen.

    MM

    • Neu im Forum
    • Beiträge: 4
    • Geschlecht:
    Re: E-Mail Validierung und neue gTLDs
    Antwort #20 am: 25. August 2015, 18:31:26
    Im Prinzip ein guter Ansatz mit der Bibliothek 'is_email.php'

    Habe hier grad das gleiche Problem, dass ein Kunde mit einer neumodischen eMail-Adresse mit der TLD ".one" sich nicht im Shop anmelden kann.

    Allerdings reicht die Ergänzung der eMail-Prüfung bei der Kunden-Anmeldung nicht aus, weil nun der phpmailer bzw. das eingesetzte sendmail einen Fehler wirft, dass die verwendete Empfänger-Adresse ungültig sei.

    Das ist im Ergebnis nun noch unschöner, weil die Fehlermeldung vom phpmailer in xtc_php_mail.inc.php einfach per echo auf dem Bildschirm ausgegeben wird und die Routine dann mit exit aussteigt.
    Der Kunde sieht also eine Fehlermeldung "Message was not sent / Mailer Error: ...." und fliegt aus der Anmeldung raus - obwohl der Kundendatensatz bereits angelegt wurde!

    Die Frage, die sich mir nun stellt ist, ob und wie die Low-Level-Routinen im phpmailer bzw. sendmail dazu gebracht werden können, neue unbekannte TLDs zu akzeptieren?
    Hat jemand Erfahrung damit?

    Danke für Hinweise.
    Gruß, Marcel

    web28

    • modified Team
    • Beiträge: 9.404
    Re: E-Mail Validierung und neue gTLDs
    Antwort #21 am: 25. August 2015, 20:35:31
    Der regex in xtc_validate_email.inc.php kann wie folgt geändert werden:

    Code: PHP  [Auswählen]
    $regex = "/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-z]{2,15})$/i";

    Eine Validierung der Emailadresse im phpmailer wäre mir neu, sendmail ist eine Serverfunktion.
    Welche phpmailer Version wird denn eingesetzt? (Version steht im Dateikopf).
    Statt sendmail mal smtp versuchen.

    Gruss Web28
    10 Antworten
    6324 Aufrufe
    28. Januar 2015, 18:16:01 von thomas57
    4 Antworten
    2600 Aufrufe
    17. Januar 2010, 18:49:54 von Tomcraft
    3 Antworten
    6757 Aufrufe
    05. November 2011, 11:17:52 von hendrik
               
    anything