Wichtig
- eingesetzte Version
- 5.3.10
- Fehlerbeschreibung
- Weißer Bildschirm, wenn Kunde Artikel in den Warenkorb legt
Beschreibung
Fatal Error (Weißer Bildschirm), wenn Kunde Artikel in den Warenkorb legt.
Ursache: wir haben im Modul "Versandarten" -> "Versandkosten nach Preis/Gewicht" in der Tabelle "Versandkosten" alphanumerische Zeichen eingegeben, z.B.
"5:12.00,8:19.50,30:auf Anfrage". Das lässt sich so kommentarlos abspeichern. Wenn ein Kunde diesen Artikel in den Warenkorb legt, gibt es durch den String "auf Anfrage" den
FATAL ERROR(1): "Uncaught TypeError: Unsupported operand types: string * int in /data/htdocs/www.picturelight.info/shop/includes/modules/shipping/table.php:69
bei der Berechnung der Versandkosten, verbunden mit dem weißen Bildschirm. Das ist tückisch, da es bei der Eingabe der Versandkosten nicht geprüft wird und der Fehler auch nicht sofort auffällt.
Meine quick-and-dirty Lösung:
switch ($key) {
case 'MODULE_ORDER_TOTAL_GV_INC_SHIPPING' :
case 'MODULE_ORDER_TOTAL_COUPON_INC_SHIPPING' :
xtc_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . $value
. "' where configuration_key IN ('MODULE_ORDER_TOTAL_GV_INC_SHIPPING', 'MODULE_ORDER_TOTAL_COUPON_INC_SHIPPING')");
break;
// NEU Prüfung auf Strings in Versandkostentabelle
// Erlaubt sind: Ziffern, Punkt, Komma, Doppelpunkt und ein leerer String
// ----------------------------------
case 'MODULE_SHIPPING_TABLE_COST' :
if (!preg_match('/^[0-9.,:]*$/', $value)) {
die('In der Kostentabelle (' . $value . ') dürfen nur Ziffern, Komma, Punkt und Doppelpunkt stehen. <button onClick="history.back();">Zurück</button>');
}
break;
// ----------------------------------
}
Alles anzeigen
Kann man hier eine Fehlermeldung eleganter einblenden als durch "die()"?
Kommentare 1