Neu URL Weiterleitung JTL Shop 4 Plugin - DB Verbindung, wie?

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
146
10
Oldenburg
Plugin Aufbau:

/includes/plugins/jbm_newsletter/version/101/frontend/

Datei:
jbm_weiterleitung.php

Gehört zu
/includes/plugins/jbm_newsletter/version/101/frontend/template/jbm_weiterleitung.tpl

AUS: http://docs.jtl-shop.de/de/latest/shop_plugins/hinweise.html

$i = $GLOBALS['NiceDB']->executeQuery("
INSERT INTO my_table
('id', 'text', 'foo')
VALUES (" . $_POST['id'] . ", '" . $_POST['text'] . "', '" . $_POST['foo'] . "')", 3
);

Wieso erhalte ich die Fehlermeldung:

Fatal error: Uncaught Error: Call to a member function executeQuery() on null in jbm_weiterleitung.php
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.648
2.699
Berlin
Firma
css-umsetzung
Aus welcher Steinzeit ist das denn?

Code:
$i = $GLOBALS['NiceDB']->executeQuery("
INSERT INTO my_table
('id', 'text', 'foo')
VALUES (" . $_POST['id'] . ", '" . $_POST['text'] . "', '" . $_POST['foo'] . "')", 3
);

Das nenne ich ja mal nen sichern SQL Query.... Du hast schon gelesen, das du Shop:😀B()-> verwenden sollst?
Im 5er Shop ist das dann auch noch mal geändert.


Insbesondere bei der Behandlung von Nutzereingaben ist es fahrlässig, unbehandelte POST- oder GET-Parameter direkt in SQL-Queries zu integrieren. Falls es sich bei der Spalte id um einen numerischen Datentyp handelt, sollte zumindest ein INT-Cast vorgenommen werden, bspw. via (int)$_POST['id'].

Kein Mensch weiß was du da machst, das was du zeigst sieht komisch aus, viel wichtiger wäre es also zu wissen was in jbm_weiterleitung.php wirklich steht und wer diese Datei überhaupt included.
 
  • Gefällt mir
Reaktionen: Horus Sirius

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
146
10
Oldenburg
Aus welcher Steinzeit ist das denn?

Code:
$i = $GLOBALS['NiceDB']->executeQuery("
INSERT INTO my_table
('id', 'text', 'foo')
VALUES (" . $_POST['id'] . ", '" . $_POST['text'] . "', '" . $_POST['foo'] . "')", 3
);

Das nenne ich ja mal nen sichern SQL Query.... Du hast schon gelesen, das du Shop:😀B()-> verwenden sollst?
Im 5er Shop ist das dann auch noch mal geändert.




Kein Mensch weiß was du da machst, das was du zeigst sieht komisch aus, viel wichtiger wäre es also zu wissen was in jbm_weiterleitung.php wirklich steht und wer diese Datei überhaupt included.

Vielen Dank, stand aufn Schlauch! =D

Ja echt 2- Zeilen tiefer steht echt die Lösung: (AUS: http://docs.jtl-shop.de/de/latest/shop_plugins/hinweise.html )

$obj = new stdClass();
$obj->tArtikel_id = $strkArtikel;
$obj->cURL = $strPathURL;
$i = Shop:😀B()->insert('jbm_newsletter', $obj);

Funktioniert, habe früher aber diese $GLOBALS['NiceDB'] schon gesehen, deshalb kam es mir bekannt vor...sollte mal aus der Doku gelöscht werden in 4.06.11 funktioniert EIN GLÜCK geht das Beispiel nicht, meine nächste Frage wäre gewesen wie ich das hier verwende:

mysqli_real_escape_string ( mysqli $link , string $escapestr ) : string

Gehe davon aus, das jetzt alle Parameter dadurch gejagt werden (OOB-Stil, wohl eher).

Ich muss also nix mehr escapen, richtig? "Bessere Variante: " heißt nicht SQL-Injektion Safe, traute sich keiner zu schreiben?
 

Ähnliche Themen