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: Vermischte Bestellungen [kritisch]

    Jami

    • Neu im Forum
    • Beiträge: 19
    • Geschlecht:
    Vermischte Bestellungen [kritisch]
    am: 24. März 2015, 13:24:53
    Hallo,

    ich habe bei einem Shop schon länger folgendes Problem, alle Lösungsansätze waren dabei erfolglos. Mir ist auch weiterhin der genaue Fall für das Auftreten dieses Problems schleierhaft bzw. wann genau dieses ausgelöst wird. Allerdings ist dieser Fehler wirklich kritisch:

    Kunde A gibt eine Bestellung auf -> Bestellung wird ausgeführt, keine Probleme
    Kunde B gibt eine Bestellung auf -> Kundenadresse: Kunde A, Versandadresse Kunde B, Rechnungsadresse Kunde A

    Die zweite Bestellung ist daher fehlerhaft und Kunden erhalten Daten von "Fremden".
    Merkwürdig an dieser ganzen Sache ist, dass dieser Fehler nur sehr selten auftritt - das ändert natürlich nichts daran wie kritisch dieses Problem ist. Nachvollziehbar ist für mich quasi nichts mehr, es scheint willkürlich zu passieren obwohl dieser Schluss an zu wenig Informationen liegen wird.
    Die Kunden benutzen die unterschiedlichsten Browser, hierbei ist kein Muster erkennbar. Mal geschieht dies mit Chrome, IE, Firefox, Safari, mal über mobile Browser und mal per Desktop-PC.

    Ein Beispiel vom 20.3.:
    11:32 Uhr - Kunde A bestellt mehrere Artikel mit OrderID 10863
    12:00 Uhr - Kunde B bestellt einen Artikel mit OrderID 10864
    -> Order ID 10864 wird vermischt: Kundenadresse von Kunde A, Versandadresse von Kunde B, Rechnungsadresse von Kunde A.

    Ich habe das Ganze einmal mit Auszügen aus der Datenbank und dem Backend des Shops grafisch zusammengestellt zu finden im Anhang.

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

    Wie man sieht erhalten zwei Kunden die gleiche ID innerhalb des Adressbuches.

    Ich hoffe wirklich dass jemand eine Idee hat, ich weiß mittlerweile nicht mehr weiter.

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

    innuXTC

    • Viel Schreiber
    • Beiträge: 508
    Re: Vermischte Bestellungen [kritisch]
    Antwort #1 am: 24. März 2015, 13:31:40
    Hallo Jami,

    das klingt für mich wie ein Session-Problem!
    Kannst Du bitte mal Deine Einstellungen posten?!

    Gruss,
    innuXTC

    Jami

    • Neu im Forum
    • Beiträge: 19
    • Geschlecht:
    Re: Vermischte Bestellungen [kritisch]
    Antwort #2 am: 24. März 2015, 13:39:37
    Hallo innu und danke für die schnelle Antwort,

    anbei die Session-Einstellungen.

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

    innuXTC

    • Viel Schreiber
    • Beiträge: 508
    Re: Vermischte Bestellungen [kritisch]
    Antwort #3 am: 24. März 2015, 13:49:59
    Servus,

    Checken des User Browsers = true
    Session erneuern = true

    sollte helfen ;-)
    Gruss, innuXTC

    Jami

    • Neu im Forum
    • Beiträge: 19
    • Geschlecht:
    Re: Vermischte Bestellungen [kritisch]
    Antwort #4 am: 24. März 2015, 13:57:23
    Hi,

    danke ich werde das mal testen. Schade ist, dass ich es nur einstellen kann und dann quasi warten muss ob der Fehler erneut auftritt.

    Das Checken der Session ID und der IP ist nicht "ausgereift" oder wie ist das Ganze zu verstehen?
    Damit will ich sagen dass das ansich schöne Funktionen sind, ich frage mich nur warum sie per Standard deaktiviert sind.

    innuXTC

    • Viel Schreiber
    • Beiträge: 508
    Re: Vermischte Bestellungen [kritisch]
    Antwort #5 am: 24. März 2015, 14:01:38
    Hi Jami,

    schau mal, ob Du hier Antworten auf Deine Frage(n) findest: FAQ: Empfohlene Sessioneinstellungen

    Gruss, innuXTC

    Jami

    • Neu im Forum
    • Beiträge: 19
    • Geschlecht:
    Re: Vermischte Bestellungen [kritisch]
    Antwort #6 am: 24. März 2015, 14:05:30
    Hi innu und danke für den Link,

    den kannte ich schon (ich erinnere mich) - bei den von Dir vorgeschlagenen Einstellungen habe ich nun das Problem dass man direkt nach dem Anmelden direkt wieder ausgeloggt ist. Irgendwas möchte da also noch nicht so ganz... :(

    Hoster ist übrigens All-Inkl. Ich könnte mir vorstellen dass es was mit dem Session Speicherort zutun hat und werde mal direkt beim Hoster nachfragen, vielleicht haben die sowas ja öfter.

    Marcus Kreusch

    • Fördermitglied
    • Beiträge: 328
    • Geschlecht:
    Re: Vermischte Bestellungen [kritisch]
    Antwort #7 am: 24. März 2015, 17:29:17
    Hallo Jami,

    ich würde dir sehr dazu raten, dir einen guten Dienstleister zu suchen, der ein Log für alle Zugriffe mit POST, GET und SESSION-Informationen einrichtet sowie die DB-Schreibzugriffe auf die Tabellen customers und address-Book.

    Dann wäre es ein Leichtes beim nochmaligen Vorkommen den Fehler zu finden.
    Falls dein Shop nicht zu 100% original ist, bin ich mir sehr sicher, dass eine nachträgliche Modifikation schuld ist - ein Session-Problem halte ich eher für sehr unwahrscheinlich...

    Viele Grüße
    Marcus

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Vermischte Bestellungen [kritisch]
    Antwort #8 am: 24. März 2015, 17:52:57
    Wird die Session in die Datenbank gespeichert oder in das Dateisystem? siehe includes/configure.php:

    Code: PHP  [Auswählen]
    define('STORE_SESSIONS', 'mysql'); // leave empty '' for default handler or set to 'mysql'

    Benutzt Du Gastkonten? Steht Löschen der Gastkonten auf true? Ich würde das Löschen der Gastkonten deaktivieren, dann werden vermutlich auch keine customer_ids doppelt genutzt.

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.222
    • Geschlecht:
    Re: Vermischte Bestellungen [kritisch]
    Antwort #9 am: 24. März 2015, 19:21:28
    customers_id ist ein Autoincrement und kann nicht doppelt vergeben werden

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Vermischte Bestellungen [kritisch]
    Antwort #10 am: 25. März 2015, 08:18:28
    Das ist so nicht ganz richtig.

    Code: SQL  [Auswählen]
    DELETE FROM customers WHERE customers_id=5
    und anschließend
    Code: SQL  [Auswählen]
    INSERT INTO customers(customers_id, customers_email_address) VALUES (5, 'demo@modifired-shop.org')
    führts dazu, dass es einen neuen customer 5 gibt, der nichts mit dem alten zu tun hat.

    Problem: die alten Adressen aus der Tabelle address_book.

    Und irgendwo in diesem Bereich muss es eine Verwurschtelung geben, es ist ja nicht das erste mal, dass das Problem mit falschen Adressdaten bzw. Sichtbarkeit anderer Bestellungen gibt. Deren einzige technische Verbindung ist die customers_id. Nur Nachstellen konnte das bis jetzt halt niemand.

    Jami

    • Neu im Forum
    • Beiträge: 19
    • Geschlecht:
    Re: Vermischte Bestellungen [kritisch]
    Antwort #11 am: 25. März 2015, 15:24:18
    Wird die Session in die Datenbank gespeichert oder in das Dateisystem?
    In die Datenbank:
    Code: PHP  [Auswählen]
      define('STORE_SESSIONS', 'mysql'); // leave empty '' for default handler or set to 'mysql'

    Benutzt Du Gastkonten?
    Ja, diese werden benutzt
    Steht Löschen der Gastkonten auf true?
    Seit einiger Zeit auf true da der Fehler bereits vorher auftrat. Vorher auf false, da bestand beschriebenes Problem allerdings auch schon. Das war einer von vielen Lösungsansätzen meinerseits.

    Ich würde das Löschen der Gastkonten deaktivieren, dann werden vermutlich auch keine customer_ids doppelt genutzt.
    Das habe ich nochmal umgestellt. Wie gesagt bestand der Fehler aber bereits als diese Option noch deaktiviert war - nun werden die Gastkonten nicht mehr gelöscht.

    customers_id ist ein Autoincrement und kann nicht doppelt vergeben werden

    Ja und nein, je nachdem worüber man redet. In der Tabelle "customers" ist die customer_id ein Autoincrement-Wert. In der Tabelle "address_book" ist dies nicht der Fall, dort ist nur die address_book_id per Autoincrement konfiguriert.

    Der Fehler resultiert aber aus eben diesem Zusammenspiel von address_book und customers. Ich bin mir nur nicht sicher was passieren würde, würde ich die customer_id im address_book auf Unique stellen. 1. ginge das derzeit nicht, da manche Einträge doppelt. Aber auch wenn ich diese Einträge verbessern oder löschen würde, wüsste ich nicht wie der Shop mit einer solchen Fehlermeldung umginge, sollte der Fall auftreten dass eine ID bereits vorhanden und der Eintrag damit abgelehnt würde.

    Der Fehler ansich ist ja auch nicht dass der Shop zwei Bestellungen "einfach so" vermischt sondern viel mehr dass bei der Registration/Bestellung eines Nutzers (bei Gästen) "manchmal"(?!) eine ID doppelt vergeben bzw. in das address_book eine bereits vorhandene ID geschrieben wird.

    Da ich bis heute nicht weiß wie sich dieser Fehler reproduzieren lässt, fällt mir die Beseitigung sehr schwer.

    Weiß irgendjemand wie sich dieser Fall nachstellen lässt bzw. wann genau dieser auftritt? Oder gibt es jemanden der dieses Problem hatte und es lösen konnte? Das mit den Session-Einstellungen scheint ja die "gängige Lösung" zu sein, bei All-Inkl. funktioniert dies aber nicht (einfach so).

    Das Problem oder besser gesagt das was dabei raus kommt ist mir klar und in diesem Thread gibt es dafür ein schönes Bild (erster Post). Nur wie zum Henker kommt es zu Stande? Und wann?

    webald

    • modified Team
    • Beiträge: 2.795
    Re: Vermischte Bestellungen [kritisch]
    Antwort #12 am: 25. März 2015, 15:31:10
    ... was passieren würde, würde ich die customer_id im address_book auf Unique stellen.
    Das darfst Du nicht machen. Wenn Du das machst, dann kann der Kunde nur genau eine Adresse anlegen. Eine separate Lieferadresse oder eine andere Rechnungsadressse ist dann nicht mehr möglich.

    Jami

    • Neu im Forum
    • Beiträge: 19
    • Geschlecht:
    Re: Vermischte Bestellungen [kritisch]
    Antwort #13 am: 25. März 2015, 16:56:18
    Das darfst Du nicht machen.

    Logisch... Danke.

    Bleibt die Frage wie es sein kann dass die customer_id doppelt vergeben wird. Soweit ich mir das angeguckt habe, wird ein Eintrag in die customers gemacht und die daraus resultierende ID (welche per Autoincrement erzeugt wird), kommt zurück. Die wiederum wird dann benutzt um den address_book Eintrag zu füllen.
    Aus der create_guest_account.php, bei mir Zeile 237
    Code: PHP  [Auswählen]
    xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array);

    $_SESSION['customer_id'] = xtc_db_insert_id();

    $sql_data_array = array (
    'customers_id' => $_SESSION['customer_id'],

    Also geht quasi alles über die Session, da die Session für den Vorgang des Registrierens/Bestellens die customer_id (zwischen)speichert.

    Und danach dann in das address_book (bei mir Zeile 270)
    Code: PHP  [Auswählen]
    xtc_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);

    An diesem Punkt muss der Fehler bereits bestehen, sonst wäre die customer_id ja in diesem Moment richtig und der Eintrag ebenfalls.
    Wenn ich das jetzt zurück führe, kann entweder die Session schuld sein oder eben das
    Code: PHP  [Auswählen]
    xtc_db_insert_id();
    .

    Und diese tut nichts anderes als
    Code: PHP  [Auswählen]
      function xtc_db_insert_id() {
        return mysql_insert_id();
      }

    Es sieht für mich bei beiden Varianten nicht nach viel Spielraum für Fehler aus.

    Was mir in diesem Moment nur einfällt und was ich auch gleich bei vorherigen Fällen nochmal überprüfen werde ist, dass der einzige Fehler, der soetwas verursachen könnte wäre, dass schlicht kein neuer customer angelegt wurde. Das würde vieles erklären, z.B. dass nur die Versandadresse vorhanden ist (aus dem address_book), beide anderen Werte, also Kunden- und Rechnungsadresse werden vom vorherigen Kunden geladen.

    Edit: Ich habe es währenddessen überprüft, leider sind die alten Fälle(customer) schon gelöscht da ja die Option für das Löschen der Gastkonten aktiviert war...

    Nochmal zu einem Lösungsansatz: das Problem scheint zu sein, dass eine falsche ID für den Eintrag in das address_book benutzt wird. Was wäre also, würde man dies wie folgt überprüft?

    create_guest_account.php, ab Zeile 235:
    Code: PHP  [Auswählen]
        xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array);

        $_SESSION['customer_id'] = xtc_db_insert_id();
               
        $sql_data_array = array (
          'customers_id' => $_SESSION['customer_id'],
     

    wird zu:
    Code: PHP  [Auswählen]
        xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array);

        $_SESSION['customer_id'] = xtc_db_insert_id();
       
        $customer_id_check_query="SELECT customers_id
                                    FROM
                                      "
    .TABLE_CUSTOMERS."
                                    WHERE
                                      customers_firstname='"
    .$firstname."'' and
                                      customers_lastname='"
    .$lastname."' and
                                      customers_email_address='"
    .$email_address."'";
        $customer_id_check_query = xtDBquery($customer_id_check_query);
        $db_customer_id = xtc_db_fetch_array($customer_id_check_query,true);
        if($db_customer_id!==$_SESSION['customer_id']) die('Es ist ein Fehler aufgetreten. Bitte kontaktieren Sie uns umgehend mit dem Codewort #mysteriöserfehler');
       
               
        $sql_data_array = array (
          'customers_id' => $_SESSION['customer_id'],
     

    Oder gibt es einen besseren Vorschlag?

    Edit: bzw. könnte man direkt das Resultat der Abfrage als neue customer_id integrieren. Das ist nicht sonderlich performant, sollte allerdings ein Fehler irgendwo vorher enstanden sein gibt es hier 1. entweder kein Ergebnis oder 2. genau das was gesucht wird.
    Vielleicht prüft man auch einfach darauf ob überhaupt ein Kunde vorhanden ist.

    Sollte ich nicht irgendetwas übersehen haben, ist dieser Punkt doch der einzige an dem ein Fehler entstehen könnte mit einer Ursache (kein customer angelegt) die auf die gesamte Problematik inkl. der Auswirkungen zutrifft.

    Möglicherweise bin ich auch zu fixiert auf diesen Punkt, jeder Rat oder Denkanstoß ist sehr wünschenswert.

    hstreicher

    • Fördermitglied
    • Beiträge: 281
    Re: Vermischte Bestellungen [kritisch]
    Antwort #14 am: 25. März 2015, 17:04:55
    hier mal was zum Thema Mysql Autoincrement Probleme

    http://www.codenaschereien.de/blog/2013/02/05/autoincrement_mysql/

    und hier noch ein Auszug aus der Autoincrement Beschreibung von MYsql
    http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

    When you insert any other value into a AUTO_INCREMENT column, the column is set to that value and the sequence is reset so that the next automatically generated value follows sequentially from the inserted value.
    0 Antworten
    1730 Aufrufe
    17. Juni 2016, 09:15:22 von lohkaes1
    1 Antworten
    2348 Aufrufe
    09. November 2009, 16:17:08 von koshiro
    3 Antworten
    3374 Aufrufe
    25. Mai 2012, 07:21:18 von Buggyboy
               
    anything