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: Bug in send_order.php

    Cookie

    • Fördermitglied
    • Beiträge: 274
    Bug in send_order.php
    am: 20. November 2010, 20:57:04
    Hallo,

    mir ist heute ein kleiner Bug aufgefallen.

    Ich hatte einen Kunden mit einer t-online email-adresse. Dummerweise hat er aber xyz@-online.de eingegeben. Also das "t" vergessen. Die Bestellung ist immer im checkout_process hängengeblieben. Ich habe es mal nachgestellt. Es kommt die Fehlermeldung:
    Zitat
    Message was not sent
    Mailer Error: Mail Funktion konnte nicht initialisiert werden.
    Die Mail an mich wird aber versendet.

    Ich schätze, dass der Fehler von

    Code: PHP  [Auswählen]
    xtc_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $order->customer['email_address'], $order->customer['firstname'].' '.$order->customer['lastname'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, $agb_file_name, '', $order_subject, $html_mail, $txt_mail);
     
    in Zeile 127
    ausgegeben wird.

    Hat jemand eine Idee, wir der Fehler am Besten abgefangen werden kann?

    Danke.
    Christian



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

    franky_n

    • Experte
    • Beiträge: 4.950
    Bug in send_order.php
    Antwort #1 am: 20. November 2010, 21:05:49
    Hallo Cookie,

    und wo ist das jetzt ein Funktionsfehler, sprich Bug?
    Der Bug ist der User, der es falsch eingibt?! :D

    Ich denke eher das es wohl eine Verbesserung ist...
    Abfangen kannst Du das nicht außer Dein Server schickt Dir bei einer falschen Mail eine Fehlermeldung.
    Das liegt aber schon außerhalb des Bereichs des Shops.

    Oder aber es gibt eine Online Datenbank im Internet die Emails auf "Bestehen" (nicht Gültigkeit in der Schreibweise) überprüft, aber ich kenne so was nicht.
    Vielleicht kennt ja irgendwer hier aus dem Forum so was...

    Viele Grüße

    Franky

    Cookie

    • Fördermitglied
    • Beiträge: 274
    Bug in send_order.php
    Antwort #2 am: 20. November 2010, 21:13:00
    Hallo Franky,

    sicherlich ist es ein Userfehler (PEBKAC), aber der Benutzer kann mit der Fehlermeldung nichts anfangen. Bei mir hat der Benutzer 10 Mal versucht den Artikel zu bestellen.

    Man müsste die Gültigkeit der Email abfragen. Entweder beim Anlegen des Accounts oder in der send_order. Die Frage ist nach was fragt man alles ab. Eine RegExp für den einen Fall zu schreiben ist ja kein Problem. Aber ich denke, dass es auch andere Fälle gibt, wo ein Fehler kommt.

    Viele Grüße.

    Christian

    guensi

    • Viel Schreiber
    • Beiträge: 2.288
    Bug in send_order.php
    Antwort #3 am: 20. November 2010, 21:15:13
    Hallo Cookie,

    und wo ist das jetzt ein Funktionsfehler, sprich Bug?
    Der Bug ist der User der es falsch eingibt?! :D

    Ich denke eher das es wohl eine Verbesserung ist...
    Abfangen kannst Du das nicht außer Dein Server schickt Dir bei einer falschen Mail eine Fehlermeldung.
    Das liegt aber schon außerhalb des Bereichs des Shops.

    Oder aber es gibt eine Online Datenbank im Internet die Emails auf "Bestehen" (nicht Gültigkeit in der Schreibweise) überprüft, aber ich kenne so was nicht.
    Vielleicht kennt ja irgendwer hier aus dem Forum so was...

    Viele Grüße

    Franky

    Wie so oft sitzt der Bug vor dem Rechner und bedient Tastatur und Maus. Wer keine korrekte E-Mailadresse eingeben kann, darf sich nicht wundern, wenn er nicht bestellen kann.

    Selbst wenn es eine solche Datenbank gäbe, wie aktuell könnte die denn sein? Die müsste ja bei jeder neu eingerichteten Domain mit Postfach aktualisiert werden. Und selbst wenn das funktionieren würde, wäre eine solche Datenbank das Paradies für alle Spam-Versender.

    Von daher würde ich eine solche Datenbank weder für sinnvoll noch für notwendig erachten, eher sogar für unsinnig, wenn nicht gar gefährlich.

    Hier stünde der Nutzen in keinem Verhältnis zu den Mißbrauchsmöglichkeiten.

    franky_n

    • Experte
    • Beiträge: 4.950
    Bug in send_order.php
    Antwort #4 am: 20. November 2010, 21:19:11
    Hallo Cookie,

    Du kannst ja nur die Schreibweise prüfen.
    Ansonsten bräuchtest Du eine Datenbank mit allen validen Email Adressen und die ist mördergroß, wenn es die überhaupt gibt.

    xyz@-online.de ist ja valide da die Adresse vor dem @ was hat, das @ beinhaltet hinter dem @ was hat, einen Punkt hat und dahinter noch das Land mit 2 Buchstaben hat.
    Aber das hilft Dir ja in dem Fall nicht weiter...

    Dein Programm müsste wissen das es t-online.de gibt aber auch online.de aber kein -online.de

    Ich könnte ja auch schreiben foo@lalala.de
    Weißt Du dann ob es diese Email vielleicht nicht doch gibt?
    Du müsstest jeden Anbeiter abdecken...
    Das habe ich Dir auch versucht oben zu erklären:
    Es geht nicht um die Schreibweise sondern darum ob es die Mailadresse gibt!

    Du könntest nur die Domain evtl. abdecken indem Du die anpingst und schaust ob die erreichbar ist... die komplette Mailadresse ist sicherlich nicht zu prüfen.

    Viele Grüße

    Franky

    Cookie

    • Fördermitglied
    • Beiträge: 274
    Bug in send_order.php
    Antwort #5 am: 20. November 2010, 21:48:47
    Hi,

    Ich würde nicht sagen, dass xyz@-online.de gültig ist.

    Eine Domain darf doch nicht mit - anfangen. Das Problem ist ja auch, dass die PHP Funktion einen fehler wirft. Allein deshalb glaube ich, dass die Domain nicht gültig ist.

    Eine Datenbank ist viel zu aufwändig. Ich schaue mir gerade die Methode xtc_validate_email an. Das Problem kann man doch sicherlich mit einer RegExp lösen.

    Christian

    Cookie

    • Fördermitglied
    • Beiträge: 274
    Bug in send_order.php
    Antwort #6 am: 20. November 2010, 21:57:17
    Hallo,

    dies sollte das Problem lösen:
    xtc_validate_email.inc.php

    Änderung:

    Code: PHP  [Auswählen]
    $domain_pat = "^$atom(\.$atom)*$";
     
    in

    Code: PHP  [Auswählen]
    $domain_pat = "^([a-zA-Z0-9])+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,6})$";
     
    Viele Grüße.

    Christian

    guensi

    • Viel Schreiber
    • Beiträge: 2.288
    Bug in send_order.php
    Antwort #7 am: 20. November 2010, 21:59:09
    Stimmt auffallend, das hatte ich übersehen.  :oops:

    Das "-" am Anfang ist nicht zulässig. Das zumindest dürfte sich mit der Prüfung per RegExp abfangen lassen.

    thomas57

    • Fördermitglied
    • Beiträge: 230
    • Geschlecht:
    Bug in send_order.php
    Antwort #8 am: 20. November 2010, 22:34:42
    Hallo Cookie,
    dann sollte der Kunde doch bereits bei seiner Anmeldung die Fehlermeldung;
    Zitat
    Message was not sent
    Mailer Error: Mail Funktion konnte nicht initialisiert werden.
    bekommen haben, hat diesen das nicht ein wenig gewundert, weiße Seite und Fehlermeldung?
    Oder hat er seinen Browser Back benutzt und weiter bestellt?

    Gruß aus dem Norden von
    Thomas

    Cookie

    • Fördermitglied
    • Beiträge: 274
    Bug in send_order.php
    Antwort #9 am: 20. November 2010, 22:43:45
    Hallo Thomas,

    das war ja genau das Problem. Die Email wurde bei der Anmeldung als gültig befunden. Damit gab es auch keine Fehlermeldung.

    Ich denke aber, dass nach dam Patch der RegExp die Fehlermeldung passen sollte.

    Grüße aus dem Süden. ;-)

    Christian

    franky_n

    • Experte
    • Beiträge: 4.950
    Bug in send_order.php
    Antwort #10 am: 21. November 2010, 08:17:45
    Hallo Cookie,

    tjo ist aber noch immer nicht der Weißheit letzter Schluß.
    Das - ist, wie Du schon sagst, nicht valide.
    Aber trotzdem weißt Du jetzt immer noch nicht ob eine Email existiert.
    Wenn er bestellt und die Mail rausgeschickt wird und diese nicht ausgeliefert werden kann, bekommst Du trotzdem eine Fehlermeldung. :)

    Ich frage mich eh wie dieser Kunde dann an der Bestätigungsmail vorbeigekommen ist... oder hat er als Gast bestellt?

    Zu dem Thema Domain könntest Du den PHP Befehl:

    Code: PHP  [Auswählen]
    if (checkdnsrr("diedomain.de")) {
      // Domain existiert
    } else {
      // Domain existiert nicht
    }
     
    nutzen.

    Viele Grüße

    Franky

    Cookie

    • Fördermitglied
    • Beiträge: 274
    Bug in send_order.php
    Antwort #11 am: 21. November 2010, 08:27:15
    Hallo Franky,

    ob die Email existiert ist bei der Bestellung erst einmal egal. Das wichtige ist, dass der Shop keinen Error meldet. Wenn die Email nicht existiert, kommt ja eh eine "Mail delivery failed" von der MTA zurück ins Absenderpostfach.

    Zur Bestätigungsemail:
    Genau beim senden dieser Mail ist ja der Fehler aufgetreten.

    Grüße
    Christian

    franky_n

    • Experte
    • Beiträge: 4.950
    Bug in send_order.php
    Antwort #12 am: 21. November 2010, 08:32:05
    Hallo Cookie,

    ich zitiere mal:

    [...] Bei mir hat der Benutzer 10 Mal versucht den Artikel zu bestellen.
    [...]

    Das kann er eigentlich nicht wenn er die Email nicht bestätigt...
    Ich würde mal sagen das ist ein Unterschied ob er bei der Anmeldebestätigungsmail einen Fehler bekommt oder beim eigentlichen Bestellen...  :whistle:

    Sorry wenn ich es zu genau gelesen habe! ;)

    Zu dem Absenderpostfach (Dein Server): Das weiß dann aber Dein Kunde nicht und versucht fröhlich weiter... :)

    Viele Grüße

    Franky

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Bug in send_order.php
    Antwort #13 am: 21. November 2010, 09:41:09
    Du kannst aber gleich umstellen auf double-opt beim erstellen des Kontos.

    Also ohne Bestätigung der Mailadresse kann er gar nichts machen. Das macht meines Erachtens aber nur bei B2B Shops Sinn.

    Gruß

    keineLustmehr

    • Schreiberling
    • Beiträge: 360
    • Geschlecht:
    Bug in send_order.php
    Antwort #14 am: 22. November 2010, 11:19:24
    Mit
    Code: PHP  [Auswählen]
    function domain_exists($email,$record = 'MX')
    {
    list($user,$domain) = split('@',$email);
    return checkdnsrr($domain,$record);
    }

    //...

    if(domain_exists('user@domain.com'))
    {
    echo('This MX records exists; I will accept this email as valid.');
    }
    else
    {
    echo('No MX record exists;  Invalid email.');
    }
    kann man doch wunderbar nicht nur die Domain überprüfen sondern auch ob der Server überhaupt Mails empfangen kann.

    Shop Hosting
    13 Antworten
    7326 Aufrufe
    26. November 2011, 14:42:45 von web28
    5 Antworten
    3810 Aufrufe
    08. März 2012, 22:29:16 von jannemann
    2 Antworten
    2391 Aufrufe
    22. August 2013, 11:54:06 von mic187
    17 Antworten
    12436 Aufrufe
    27. Mai 2014, 17:04:40 von Steffffi
               
    anything