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: ANLEITUNG: Prüfung, ob Straße und Hausnummer durch Leerzeichen getrennt sind

    Trucker05

    • Schreiberling
    • Beiträge: 347
    Hallo,

    wir arbeiten mit dem Dienstleister KLARNA zusammen und haben etlich Abbrüche, da die Eingabe bei der Neuanmeldung vom Kunden falsch gemacht wird.

    In der aktuellen create_account.php kann der Kunde seine Straße und Nummer angeben wie er will!

    Beispiel aus unserem Shop:
    Hauptstraße/10
    Hauptstraße
    Hauptstraße10

    Der Dienstleister KLARNA benötigt für die Abfrage der Bonität die Straße im Format mit Leerzeichen!!

    Beispiel richtige Angabe:

    Hauptstraße 10

    Da wir etliche Abbrüche dadurch haben wollen wir die Anmeldung nun so wie Beispielsweise unsere gute deutsche Post! Der Kunde muß die Straße richtig eingeben!

    Beispiel der Onlinefrankierung als Bild angehäng!

    Gibt es hier ein fertiges Modul oder kann man das einfach umschreiben?

    Danke im Voraus!

      [ Für Gäste sind keine Dateianhänge sichtbar ]

    [EDIT Tomcraft 13.12.2011: Hier geht es direkt zur Anleitung von franky_n.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=10638.0

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Trucker,

    eigentlich sehr ungewöhnlich das KLARNAR das dann nicht selber bei der Abfrage korrigiert...
    Was machen die denn bei Kunden/Firmengebäuden die die Hausnummer "10-13" oder "10b" haben?

    Naja in jedem Fall findest Du den Formcheck in der /includes/form_check.js.php in Z41.ff:

    Code: PHP  [Auswählen]
    function check_input(field_name, field_size, message) {
      if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
        var field_value = form.elements[field_name].value;

        if (field_value == '' || field_value.length <field_size) {
          error_message = error_message + "* " + message + "\n";
          error = true;
        }
      }
    }
     
    un in Z.145:

    Code: PHP  [Auswählen]
      check_input("postcode", <?php echo ENTRY_POSTCODE_MIN_LENGTH; ?>, "<?php echo xtc_js_lang(ENTRY_POST_CODE_ERROR); ?>");
     
    Das ENTRY_POSTCODE_MIN_LENGTH stellt man im Adminbereich ein.
    Müsste man nur erweitern das dort keine Sonderzeichen sondern nur Zahlen vorkommen können...

    Viele Grüße

    Franky

    Matt

    • Experte
    • Beiträge: 4.241
    Naja, dass da nur Zahlen vorkommen dürfen hat er ja nicht gesagt. Daher einfach auf ein das Vorhandensein eines Leerzeichen prüfen, was anderes wird KLARNA auch nicht tun.
    Persönlich halte ich das ja für Schwachsinn, aber sag das mal den Dienstleistern. DHL hat da auch so komische Vorgaben, die dir spätestens bei Beistellungen aus Hong Kong um die Ohren fliegen.

    Trucker05

    • Schreiberling
    • Beiträge: 347
    Aussage Klarna: "Die Techniker von Klarna sind dran"

    Das heißt für mich, warten auf ein Update! Wobei ich sagen muß, habe noch nie eins erhalten bzw. immer erst dann, wenn ich mich über was beschwert habe! Aber lassen wir das mal!

    Brauch eigentlich nur ein extra Feld hinter Strasse wo man die Hausnummer extra eintragen muß!

    Leider komm ich mit Deiner Aussage oben nicht ganz zurecht!

    Trucker05

    • Schreiberling
    • Beiträge: 347
    @Matt

    Wenn mir jetzt noch verratest, wie ich auf ein Leerzeichen prüfe und dann die Fehlermeldung einbaue!?!?!

    Trucker05

    • Schreiberling
    • Beiträge: 347
    Wie create_account.php im Feld Strasse/NR. auf Leerzeichen prüfen???

    franky_n

    • Experte
    • Beiträge: 4.950
    Hi Trucker05,

    nee so nicht!
    Wir erwarten nicht das Ihr hier auf Knieen rutscht, aber wir erwarten auch mal ein wenig Geduld!
    Und was wir von Euch erwarten dürfen ist eine vernünftige Umgangsform!

    Glaubst Du echt das Dir so jemand antworten möchte?

    Viele Grüße

    Franky

    Trucker05

    • Schreiberling
    • Beiträge: 347
    Sorry, war so nicht geplant.
    Kommt auch nicht mehr vor!

    franky_n

    • Experte
    • Beiträge: 4.950
    Hi Trucker05,

    sooo ich habe mal geschaut.
    Es ist was mehr um es einzubauen...

    In der /templates/xtc5/module/create_account.html nach Z.68:

    Code: PHP  [Auswählen]
      <tr>
        <td width="120">{#text_street#}</td>
       <td>{$INPUT_STREET}</td>
      </tr>
     
    das einfügen:

    Code: PHP  [Auswählen]
      <tr>
        <td width="120">{#text_streetno#}</td>
       <td>{$INPUT_STREETNO}</td>
      </tr>
     
    Ebenso in der /templates/xtc5/module/create_guest_account.html (gleiche Prozedur).

    Dann in der create_account.php nach Z.71:

    Code: PHP  [Auswählen]
            $street_address = xtc_db_prepare_input($_POST['street_address']);
    das einfügen:

    Code: PHP  [Auswählen]
            $street_address_no = xtc_db_prepare_input($_POST['street_address_no']);
    In Z.176 nach:

    Code: PHP  [Auswählen]
            if (strlen($street_address) <ENTRY_STREET_ADDRESS_MIN_LENGTH) {
                    $error = true;

                    $messageStack->add('create_account', ENTRY_STREET_ADDRESS_ERROR);
            }
     
    das einfügen:

    Code: PHP  [Auswählen]
            if (strlen($street_address_no) <ENTRY_STREET_ADDRESS_NO_MIN_LENGTH) {
                    $error = true;
                    $messageStack->add('create_account', ENTRY_STREET_ADDRESS_NO_ERROR);
            }
     
    In Z.278 das ändern:

    Code: PHP  [Auswählen]
                    $sql_data_array = array ('customers_id' => $_SESSION['customer_id'], 'entry_firstname' => $firstname, 'entry_lastname' => $lastname, 'entry_street_address' => $street_address, 'entry_postcode' => $postcode, 'entry_city' => $city, 'entry_country_id' => $country,'address_date_added' => 'now()','address_last_modified' => 'now()');
     
    in das:

    Code: PHP  [Auswählen]
                    $sql_data_array = array ('customers_id' => $_SESSION['customer_id'], 'entry_firstname' => $firstname, 'entry_lastname' => $lastname, 'entry_street_address' => $street_address, 'entry_street_address_no' => $street_address_no, 'entry_postcode' => $postcode, 'entry_city' => $city, 'entry_country_id' => $country,'address_date_added' => 'now()','address_last_modified' => 'now()');
     
    In Z.479 nach dem:

    Code: PHP  [Auswählen]
    $smarty->assign('INPUT_STREET', xtc_draw_input_fieldNote(array ('name' => 'street_address', 'text' => ' '. (xtc_not_null(ENTRY_STREET_ADDRESS_TEXT) ? '<span class="inputRequirement">'.ENTRY_STREET_ADDRESS_TEXT.'</span>' : ''))));
     
    das:

    Code: PHP  [Auswählen]
    $smarty->assign('INPUT_STREET_NO', xtc_draw_input_fieldNote(array ('name' => 'street_address_no', 'text' => ' '. (xtc_not_null(ENTRY_STREET_ADDRESS_NO_TEXT) ? '<span class="inputRequirement">'.ENTRY_STREET_ADDRESS_NO_TEXT.'</span>' : ''))));
     
    In der /lang/german/german.php nach Z.119:

    Code: PHP  [Auswählen]
    define('ENTRY_STREET_ADDRESS_ERROR', 'Strasse/Nr. muss aus mindestens ' . ENTRY_STREET_ADDRESS_MIN_LENGTH . ' Zeichen bestehen.');
    define('ENTRY_STREET_ADDRESS_TEXT', '*');
    das einfügen:

    Code: PHP  [Auswählen]
    define('ENTRY_STREET_ADDRESS_ERROR', 'Hausnummer muss aus mindestens ' . ENTRY_STREET_ADDRESS_NO_MIN_LENGTH . ' Zeichen bestehen.');
    define('ENTRY_STREET_ADDRESS_NO_TEXT', '*');
    In der /lang/german/lang_german.conf nach Z.89:
    text_street = 'Strasse/Nr.:'
    das einfügen:
    text_street_no = 'Hausnummer:'

    Die englischen Einträge selber ergänzen!

    Dann in der Datenbank noch das:

    Code: PHP  [Auswählen]
    ALTER TABLE  ADD  VARCHAR( 5 ) NOT NULL AFTER  ;
    INSERT INTO configuration SET configuration_key='ENTRY_STREET_ADDRESS_MIN_LENGTH', configuration_value=5, configuration_group_id=2, sort_order=17;
     
    So damit sollte zumindest schon mal das Frontend abgedeckt sein.

    WICHTIG: Erst an einem Testshop testen da hier Fehler drin sein könnten. Ist ungetestet!

    Viele Grüße

    Franky

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Zusammen,

    wer möchte jetzt weiter machen, denn:
    Es zieht sich noch durch den weiteren Shop.
    Überall wo die Straße abgefragt wird muß auch jetzt die Hausnummer erscheinen.
    Wäre froh wenn es geteilt wird da es ja eine größere Sache ist...

    Insgesamt sind es (so sagt mir der Total Commander) 40 Dateien die geändert werden müssen...

    Viele Grüße

    Franky

    Trucker05

    • Schreiberling
    • Beiträge: 347
    Vielen Dank erst mal!

    Da ich keinen Testshop habe, werd ich das doch so versuchen und zur Not alles wieder Rückgängig machen!

    Ist das dann ein extra Abfragefeld für die Hausnummer?
    So wie man mir das erklärt hat, braucht das Modul von Klarna die richtige Form der Strasse um die Bonitätsabfrage durchzuführen. Das aktuelle Modul füge ich mal unten bei!

    Vielleicht frag ich noch den Techniker von Klarna ob Ihr Modul dann damit zurecht kommt!?
    Sofern dieser mir das beantworten kann. Leider sind die nicht ganz so fit wie das Forum hier!

    Hatte letzten Monat 70 Kunden die über Klarna kaufen wollten, die Prüfung wurde aber abgelehnt! Somit habe ich fast 60 Kunden verloren.

    Laut Klarna Technik lag es daran, dass der Kunde bei der Anmeldung bei der Straße die Hausnummer wie oben beschrieben falsch angegeben hat. Nach kurzer Prüfung konnte ich das bestätigen.

    Somit muß ich den Kunden nun irgendwie dazu "zwingen" die Daten richtig anzugeben.

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo trucker05,

    das ist die Frontend Geschichte zum angeben einer separaten Hausnummer.
    Jedoch muß diese Hausnummer dann auch z.B. in der checkout mit verarbeitet werden.

    Wenn man mit dem Total Commander in den kompletten Dateien nach "street_address" sucht, zeigt er an das 45 Dateien betroffen sind. 5 sind vom Installationspfad die sind zu vernachlässigen.
    Also noch 40 Dateien die betroffen sind.

    Im Frontend (alles was nicht im /admin/ Ordner steht) werden es jetzt nur noch Sachen sein wo man sich die Zeile bei "street_address" abkopieren kann und daraus "street_address_no" machen muß.
    Vielleicht kriegst Du das ja selber hin und könntest dann nachher die Änderungen im Frontend weiter dokumentieren?

    Im Admin Bereich muß dann noch mehr passieren... das wäre dann vielleicht schön wenn das noch jemand mit Programmierkenntnissen übernehmen könnte... :)

    Viele Grüße

    Franky

    Trucker05

    • Schreiberling
    • Beiträge: 347
    Wäre vielleicht für das ganze modified eCommerce Shopsoftware interessant!
    Habe schon gelesen, dass es hier auch mit Intraship und Hermes Probleme gibt, da Kunden Ihre Adresse nicht im richtigen Format angeben!

    Mit dem Total Commander bekomme ich raus wo die Daten stecken??

    Ich erstelle mal erst einen Testshop und mach mich dann dran!

    Hoffe wir finden noch jemanden, der es vielleicht satt hat die Adresse für Intraship immer zu ändern!

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Trucker05,

    ja Du brauchst das Originalpaket auf Deinem Rechner(!) nicht auf dem Webhosting.
    Das Originalpaket kannst Du dann markieren und dann auf Befehle => Suchen => Text suchen anklicken und dahinter den Text angeben. In Deinem Fall "street_address" ohne die Anführungszeichen...

    Dann sucht er alle Dateien raus die auch den Text "street_address" beinhalten.

    Viele Grüße

    Franky

    Matt

    • Experte
    • Beiträge: 4.241
    Ich würde es nicht tun. Es gibt zu viele Stellen, wo das aufschlägt. Wenn überhaupt würde ich die Sachen getrennt abfragen und überprüfen, dann aber in einem Rutsch in die Datenbank schreiben. Da wären wir bei einer überschaubaren Anzahl Dateien.

    Oder eben auf Leerzeichen prüfen:

    Code: PHP  [Auswählen]
    if (strpos($street_address, ' ')===false) {
        $error = true;

        $messageStack->add('create_account', ENTRY_STREET_NUMBER_ERROR);
    }
    ENTRY_STREET_NUMBER_ERROR halt noch in der Sprachdatei anlegen. Wie's geht steht ja schon oben.

    [...]
    Hatte letzten Monat 70 Kunden die über Klarna kaufen wollten, die Prüfung wurde aber abgelehnt! Somit habe ich fast 60 Kunden verloren.
    [...]

    Wenn Klarna das ist, was ich denke (der schwedische Anbieter mit Rechnungszahlung), dann ist das wohl eher normal, dass die Kunden bei der Straßenangabe rumtricksen. Die wollen nämlich das System austricksen. So einfach ist das. Deine Quote ist mehr als hoch. Kein normaler Shop hat so viele falsche Adressen aus Versehen. Du hast also nicht 60 Kunden weniger, sondern 60 Betrüger nicht beliefert.

    Shop Hosting
    2 Antworten
    1160 Aufrufe
    21. Januar 2021, 21:16:08 von Tomcraft
    13 Antworten
    7928 Aufrufe
    16. Dezember 2015, 17:00:21 von jaspa
    4 Antworten
    4483 Aufrufe
    29. April 2016, 11:04:40 von bigi100
    7 Antworten
    3170 Aufrufe
    12. Februar 2010, 13:13:41 von Tomcraft