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: Kundenkonto erstellen mit Mailadresse xxx@xxx.berlin etc. nicht möglich?

    0815

    • Viel Schreiber
    • Beiträge: 905
    Hallo,

    eine Kundin mach soeben per Mail ein kleines Faß auf, da sie sich mit Ihrer Mailadresse xxx@xxx-xxx.berlin etc. angeblich nicht anmelden kann, weil die Mailadresse laut Shop-Fehlermeldung ungültig sei.

    Kann es mit den neuen Domainendungen tatsächlich zu Problemen bei der Prüfung der Mailadresse kommen, oder hat die Kundin ein "anderes Problem"?

    Mit anderen Worten ... ist da schon was bekannt und gibt es vielleicht auch schon eine entsprechende Anpassung für den Shop?

    Für Infos vorab vielen Dank.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=30234.0
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware

    dmun

    • Mitglied
    • Beiträge: 241
    Hallo,

    ja, das liegt an der TLD .berlin.
    Ich hatte auch schon einen ähnlichen Fall, aber noch nicht Nachgeschaut wie man Abhilfe schaffen kann.

    Viele Grüße, Dirk

    Frank_R

    • Mitglied
    • Beiträge: 123
    In der Datei xtc_validate_email.inc.php werden in der Funktion xtc_validate_email derzeit nicht alle aktuellen Top Level Domains berücksichtigt.

    Der Ausdruck in ca. Zeile 73

    Code: PHP  [Auswählen]
    $regex = "/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$/i";

    müsste entsprechend um die fehlenden Domainendungen erweitert werden.

    dmun

    • Mitglied
    • Beiträge: 241
    ja, ich habe es zwischenzeitlich auch gefunden.
    Zeile 72 ff müsste dann so aussehen:

    Code: PHP  [Auswählen]
    //web28 - 2011-07-28 - new $regex see http://www.regular-expressions.info/email.html      
          $regex = "/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum|berlin)$/i";
          $valid_address = preg_match($regex, $email);    

    Eine unschöne Lösung. Gibt es dafür keinen besseren Ansatz ? Wieviele TLD in der Art gibt es denn in der Zwischenzeit ? Und es dürften in Zukunft noch viel mehr werden...

    Viele Grüße Dirk

    Frank_R

    • Mitglied
    • Beiträge: 123
    Alle aktuellen Domainendungen sieht man z.B. hier:

    data.iana.org/TLD/tlds-alpha-by-domain.txt

    Aber mal ehrlich: Selbst die beste Syntaxprüfung kann nicht sicherstellen, ob eine eingegebene Adresse wirklich existiert.
    Darum stellt sich mir die Frage, ob man die Domainendung überhaupt so intensiv prüfen sollte...

    0815

    • Viel Schreiber
    • Beiträge: 905
    Oh, ich sehe gerade, dass ich in meinem Shop noch eine ältere Version der xtc_validate_email.inc.php verwende.

    Grundsätzlich könnte und würde ich gerne die neue Version verwenden, allerdings habe ich in meiner Datei noch eine hilfreiche Option, die ich auch mit der neuen Version weiterhin nutzen möchte  ...

    Code: PHP  [Auswählen]
    $fehler_domain = array("rcor.de","acor.de","gx.de","mx.de","eb.de","wb.de","onliene.de","onlin.de","onlein.de","t-onine.de","t-onlein.de","-online.de","t.online.de","t-onlie.de","tonline.de","t-onlin.de","tonlin.de","-tonline.de","t-oneline.de","tiscali.de","12move.de","netscape.de");
    [...]
    if (preg_match('/'.$domain_pat.'/i', $domain) && !in_array($domain, $fehler_domain)) {
    [...]
     

    ... wenn ich nur wüßte, wie man den Code in der neuen Datei funktionstüchtig unterbringt.

    baalze

    • Neu im Forum
    • Beiträge: 40
    z.B.
    Code: PHP  [Auswählen]
    $fehler_domains = array("rcor.de","acor.de","gx.de","mx.de","eb.de","wb.de","onliene.de","onlin.de",
    "onlein.de","t-onine.de","t-onlein.de","-online.de","t.online.de","t-onlie.de","tonline.de",
    "t-onlin.de","tonlin.de","-tonline.de","t-oneline.de","tiscali.de","12move.de","netscape.de");

    foreach ($fehler_domains as $fehler_domain) {
            if (substr($email, -strlen($fehler_domain)) == $fehler_domain)
                    return false;
    }

    baalze

    • Neu im Forum
    • Beiträge: 40
    Logischerweise mit At-Zeichen ;-):
    Code: PHP  [Auswählen]
    $fehler_domains=array("@rcor.de","@acor.de","@gx.de","@mx.de","@eb.de","@wb.de",
    "@onliene.de","@onlin.de","@onlein.de","@t-onine.de","@t-onlein.de","@-online.de",
    "@t.online.de","@t-onlie.de","@tonline.de","@t-onlin.de","@tonlin.de","@-tonline.de",
    "@t-oneline.de","@tiscali.de","@12move.de","@netscape.de");

    waver2

    • Neu im Forum
    • Beiträge: 26
    Hallo,
    ich habe in meiner Prüfung mittlerweile die Endungen ganz entfernt und erlaube Endungen bis zu 15 Zeichen:
    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";

    Gruß

    waver2

    dmun

    • Mitglied
    • Beiträge: 241
    Ich hatte auch deran gedacht, die Überprüfung ganz raus zu nehemen oder gibt es einen berechtigten Grund oder Einwand dies nicht zu tun ?

    Viele Grüße, Dirk

    0815

    • Viel Schreiber
    • Beiträge: 905
    @baalze

    Mit @ sieht's dann so aus:
    Code: PHP  [Auswählen]
        $fehler_domains=array("@rcor.de","@acor.de","@gx.de","@mx.de","@eb.de","@wb.de",
        "@onliene.de","@onlin.de","@onlein.de","@t-onine.de","@t-onlein.de","@-online.de",
        "@t.online.de","@t-onlie.de","@tonline.de","@t-onlin.de","@tonlin.de","@-tonline.de",
        "@t-oneline.de","@tiscali.de","@12move.de","@netscape.de");
         
        foreach ($fehler_domains as $fehler_domain) {
                if (substr($email, -strlen($fehler_domain)) == $fehler_domain)
                        return false;
        }

    ... aber an welcher Stelle muss ich das in der neuen xtc_validate_email.inc.php einfügen?

    Vor dem ...
    Code: PHP  [Auswählen]
    return $valid_address;

    oder direkt nach dem ...
    Code: PHP  [Auswählen]
    function xtc_validate_email($email) {

    oder wo?

    0815

    • Viel Schreiber
    • Beiträge: 905
    Ich überlege gerade, ob ich nicht die alte Datei beibehalte, denn hier werden die möglichen TLDs im Verzeichnis /inc in der tld.txt hinterlegt und durch die xtc_validate_email.inc.php abgefragt.

    Vorausgesetzt, die Liste unter http://data.iana.org/TLD/tlds-alpha-by-domain.txt ist immer erreichbar und aktuell, könnte man diese Datei in der Abfrage verlinken und muss sich somit dann auch nicht um die Aktualisierung kümmern. Das vorliegende Format wäre für die Abfrage geeignet.

    Alternativ gibt es ggf. auch bessere Quellen.

    sacrion

    • Neu im Forum
    • Beiträge: 27
    Die Datei muss doch nicht immer erreichbar sein ... es reicht doch, diese regelmäßig per cronjob runterzuladen, z.b.

    0 0 * * * wget -O /pfad/zum/shop/tlds-alpha-by-domain.txt http://data.iana.org/TLD/tlds-alpha-by-domain.txt
    Dann liegt die Datei lokal vor, und dann kann man die Funktion entsprechend ergänzen, z.B.
    Code: PHP  [Auswählen]
    $valid_tlds = file(DIR_FS_DOCUMENT_ROOT.'tlds-alpha-by-domain.txt', FILE_IGNORE_NEW_LINES);
    unset($valid_tlds[0]);
    if(!in_array(strtoupper(end(explode('.', $email))), $valid_tlds))
        $valid_address = false;
     

    dmun

    • Mitglied
    • Beiträge: 241
    Hallo,

    nach meinem Geschmack wäre es noch wartungsfreundlicher, wenn die Liste in der DB stehen würde und man diese über den Admin ergänzen könnte.

    Wobei ich mir immer noch die Frage stellen, ob man dies überhaupt machen muss. Wenn die Endung nicht stimmt, dann bekommt der Kunde keine eMail.

    Viele Grüße, Dirk

    sacrion

    • Neu im Forum
    • Beiträge: 27
    Wozu wäre das denn nötig? Die Liste der IANA ist die einzig maßgebliche, diese wird aktuell gehalten, und sooo oft gibt es auch keine neuen TLDs.

    Aber wer sowas machen will - ich werde denjenigen bestimmt nicht aufhalten ;)
    21 Antworten
    9484 Aufrufe
    02. Oktober 2014, 21:12:04 von bludie
    3 Antworten
    2718 Aufrufe
    11. November 2012, 17:38:50 von jannemann