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: Nach Update auf Version 2.0 Bestellprozess-Problem (keine checkout_success.php)

    hypdwarf

    • Neu im Forum
    • Beiträge: 23
    Hallo zusammen,

    habe einen Testshop auf die modified Version 2.0 angehoben, allerdings funktioniert der Bestellprozess nun nicht mehr richtig. Der Schritt 4, also die checkout_success.php wird nicht angezeigt, sondern immer ein leerer Warenkorb (shopping_cart.php). Die Bestellung wird allerdings abgespeichert und auch die Mails werden versendet.

    Ursprüngliche Shop-Version: 1.06-r4642 (auf UTF-8 umgestellt!)
    PHP-Version 5.4.45

    Habe diverse Varianten zur Installation/Update ausprobiert, beschreibe hier nur eine:
    - Alle Zahlungs- und Versandmodule deinstalliert
    - die nachfolgenden DB-Updates mit Zeichencodierung iso-8859-15 ausgeführt
    update_1.0.6.0_to_1.0.6.1.sql
    update_1.0.6.1_to_1.0.6.2.sql
    update_1.0.6.2_to_1.0.6.3.sql
    update_1.0.6.3_to_1.0.6.4.sql
    update_1.0.6.4_to_2.0.0.0.sql
    - Alle Dateien gelöscht (bis auf Bilder + PDFs)
    - Alle neuen Dateien hochgeladen
    - Installer mit UTF-8 erfolgreich durchlaufen
    - template auf tpl_modified geändert + Zahlungsmethode + Versandart hinzugefügt

    Der Shop funktioniert auch - bis auf die fehlende Erfolgsmeldung nach der Bestellung...
    Wie gesagt: Dort erscheint nur ein leerer Warenkorb - keine Fehlermeldung.

    Bei einer lokalen xampp-Installation mit PHP 5.4.7 funktioniert alles einwandfrei.
    Vor der Umstellung funktionierte es auch beim hoster/online.

    Eine Idee, woran es liegen könnte?

    Danke vorab und viele Grüße,
    Christian

    Linkback: https://www.modified-shop.org/forum/index.php?topic=35404.0
    Werbung / Banner buchen

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Eine Idee, suche in 'checkout_success.php' folgenden Code

    Code: PHP  [Auswählen]
    $orders_query = xtc_db_query("SELECT orders_id,
                                         orders_status,
                                         payment_class
                                    FROM "
    .TABLE_ORDERS."
                                   WHERE customers_id = '"
    .$_SESSION['customer_id']."'
                                     AND unix_timestamp(date_purchased) > '"
    .(time() - SESSION_LIFE_CUSTOMERS)."'
                                ORDER BY orders_id DESC
                                   LIMIT 1"
    );
     

    und ersetze ihn mit diesem Code,

    Code: PHP  [Auswählen]
    $orders_query = xtc_db_query("SELECT orders_id,
                                         orders_status,
                                         payment_class
                                    FROM "
    .TABLE_ORDERS."
                                   WHERE customers_id = '"
    .$_SESSION['customer_id']."'
                                ORDER BY orders_id DESC
                                   LIMIT 1"
    );
     

    wenn dann der Fehler nicht mehr auftritt, vergleiche im Admin unter Hilfsprogramme -> Server Info das Server Datum mit dem Datenbank Datum.

    Gruss
    Hanspeter

    hypdwarf

    • Neu im Forum
    • Beiträge: 23
    Hallo Hanspeter,

    das war es! Darauf muss man erst mal kommen - genial! Und ich habe schon Tage herumexperimentiert!

    Server Datum: 2016-07-23 00:09:36 +0200 CEST
    Datenbank Datum: 2016-07-22 23:38:32

    >> Bedeutet dann wohl, dass ich bei meinem Hoster mal nen Ticket aufmache und die Zeit synchronisieren lasse, oder kann ich das dauerhaft so geändert lassen?

    Auf jeden Fall TAUSEND DANK für die super Idee!!!

    Viele Grüße,
    Christian

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Hallo Christian,

    deinen Hoster solltest Du informieren, aber auch wenn er jetzt das richtige Datum für Server und Datenbank einstellt ist insbesondere bei Shared Hosting zu erwarten, dass im laufe der Zeit wieder eine Differenz entsteht, denn bei Shared Hosting  dürfte das Problem einer Differenz zwischen Server Datum und Datenbank Datum grundsätzlicher Natur sein wenn die Datenbank und PHP nicht auf dem gleichen Server liegen.

    Die Datumsprüfung im Query ist ein Feature das erst in der 2.0er Shopversion eingeführt wurde, insofern kannst Du auf dieses zusätzliche Sicherheitsfeature auch verzichten und es so lassen wie ich es gepostet habe.

    Wenn Du möchtest kannst Du aber auch folgenden Code testen, dieser sollte eine etwaige Differenz zwischen Server Datum und Datenbank Datum bei der Abfrage berücksichtigen.

    Ersetze einfach in 'checkout_success.php' folgenden, ursprüglichen Code

    Code: PHP  [Auswählen]
    $orders_query = xtc_db_query("SELECT orders_id,
                                         orders_status,
                                         payment_class
                                    FROM "
    .TABLE_ORDERS."
                                   WHERE customers_id = '"
    .$_SESSION['customer_id']."'
                                     AND unix_timestamp(date_purchased) > '"
    .(time() - SESSION_LIFE_CUSTOMERS)."'
                                ORDER BY orders_id DESC
                                   LIMIT 1"
    );
     

    mit diesem Code

    Code: PHP  [Auswählen]
    $time_query = xtc_db_query("SELECT unix_timestamp(now()) as timestamp");
    $tq = xtc_db_fetch_array($time_query);

    $orders_query = xtc_db_query("SELECT orders_id,
                                         orders_status,
                                         payment_class
                                    FROM "
    .TABLE_ORDERS."
                                   WHERE customers_id = '"
    .$_SESSION['customer_id']."'
                                     AND unix_timestamp(date_purchased) > '"
    .(time() - SESSION_LIFE_CUSTOMERS - (time() - $tq['timestamp']))."'
                                ORDER BY orders_id DESC
                                   LIMIT 1"
    );
     

    Achtung, obigen Code habe ich nicht getestet!

    Gruss
    Hanspeter

    hypdwarf

    • Neu im Forum
    • Beiträge: 23
    Hallo Hanspeter,

    Info an den Hoster ist bereits letzte Nacht raus.
    Die Codezeilen habe ich übernommen und es funktioniert. Könnte also bei zukünftigen Versionen einfließen, da sinnvolle Anpassung.

    Nochmals vielen lieben Dank für die schnelle Hilfe und den guten Riecher!  :thumbs:

    Beste Grüße,
    Christian

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Nachtrag zu meiner Antwort #3:

    Dieser vereinfachte Code ohne zusätzliche Datenbank-Abfrage sollte eigentlich auch reichen.

    Code: PHP  [Auswählen]
    $orders_query = xtc_db_query("SELECT orders_id,
                                         orders_status,
                                         payment_class
                                    FROM "
    .TABLE_ORDERS."
                                   WHERE customers_id = '"
    .$_SESSION['customer_id']."'
                                     AND unix_timestamp(date_purchased) > (unix_timestamp(now()) - '"
    .SESSION_LIFE_CUSTOMERS."')
                                ORDER BY orders_id DESC
                                   LIMIT 1"
    );
     

    Gruss
    Hanspeter

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Hat jemand noch eine Idee, wenn beide Codes nicht helfen?

    sb_cbo-do

    • Fördermitglied
    • Beiträge: 464
    Hallo,

    die Zeiten vom Server und der Datenbank stimmen jetzt überein, aber der Warenkorb ist immer noch oft leer, wenn man im Warenkorb auf "zur Kasse" kickt.
    Es hat nur funktioniert als die Sessions in die Datei gespeichert wurden.

    Hat noch jemand eine Idee wie man das Problem lösen kann?
    Ich werde die Sessions dann jetzt erst einmal wieder in die Datei Speichern.

    MFG,

    Sven
    17 Antworten
    8526 Aufrufe
    19. Oktober 2016, 10:45:23 von omna
    2 Antworten
    1467 Aufrufe
    26. Februar 2020, 15:56:11 von JPW
    1 Antworten
    2017 Aufrufe
    26. Januar 2010, 21:36:00 von Tomcraft
               
    anything