Tom: Einrag in Datenbank

Beitrag lesen

Hello Thomas,

Nur: Die schliessenden Klammern bei stripslashes() hast Du vergessen.

Irgendwas fehlt immer *umpf*

Das Escapen nicht vergessen.
Die Häkchen nicht vergessen für die Feldwerte, auch für Zahlen!
Die Fehlerbehandlung nicht vergessen.

Wie wahr, wie wahr!

Wobei ich das Escapen etwas frueher machen wuerde:

Statt:

$hersteller = stripslashes($_POST['hersteller']);
/* ... */
$sql  = "INSERT INTO $table SET";
$sql .= "hersteller = '".mysql_escape_string($hersteller)."'";

schreibe ich eher:

$hersteller = mysql_escape_string(stripslashes($_POST['hersteller']));

Jein.
Das war natürlich mal wieder arg verkürzt von mir.

Man muss davon ausgehen, dass man nach dem stripslashes(), falls es denn notwendig ist, mit den Datenwerten noch eine Weile im Script weiterarbeitet und sie dann erst nach der Verarbeitung an die Speichern-Funktion übergibt.

Ich propagiere ja sowieso Arrays und da kann man das dann locker mit einer Schleife erledigen und hat überhaupt keine Schreibarbeit mehr.

/* ... */
$sql  = "INSERT INTO $table SET";
$sql .= "hersteller = '$hersteller'";

Das ist dann wunderbar lesbar. Insofern hast Du recht. Für mein eigenes Tut werde ich das vielleicht so machen. da sieht man dann viel besser, was passiert.

Übrinens nochmal drauf rumgeritten:

Auch Zahlen sollte man in Häkchen übergeben, wenn sie nicht aus dem Script stammen. Da war neulich jemand, der ziemlich nervig gefragt hat, wieso.

Weil das Query sonst ziemlich leicht injizierbar ist. Das bedeutet, dass man mittles schlauer Tricks über das Webfomular die ganze Datenbank manipulieren kann. Die Wahrscheinlichkeit, das auszuschließen, besteht in der Kombination der Häkchen für ALLE Werte außer NULL und dem Escapen.

NULL ___muss___ man daher auch im Script generieren und darf es niemals direkt aus dem HTTP-Stream entnehmen.

So, nun reichts für heute. Nun wird nun noch mitgelesen.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen