Felix Riesterer: PHP: Hochkomma für MySQL/MariaDB maskieren?

Beitrag lesen

Lieber Yadgar,

  $stichwort = $_POST["stichwort"];
  $stichwort = mysqli_real_escape_string($db, $stichwort);
  $kategorie = $_POST["kategorie"];
  $kategorie = mysqli_real_escape_string($db, $kategorie);

das sind Beispiele aus der Hölle. Das willst Du später so nicht mehr haben. Die Variable $stichwort ist ein String, dem man nicht ansieht, woher sein Wert kommt und wie er für welche Zwecke behandelt worden ist. Besser so:

$sql = 'SELECT * FROM ...';
$params = [
  'search' => mysqli_escape_string($_POST['stichwort'])
];

$db->get($sql, $params);

So sieht man, dass da ein POST-Wert konkret für DB-Anfragen vorbehandelt wird. Der Inhalt in $_POST ist prinzipiell nicht vertrauenswürdig, das sieht man dem Variablennamen schon an. Das sieht man einer Variable $stichwort nicht an. Man sieht ihr auch nicht an, dass da (vielleicht oder auch nicht) mysqli_escape_string() drübergefahren ist.

Ich glaube, ab einem bestimmten Alter sollte man das Programmieren bleiben lassen...

Man darf auch im hohen Alter noch dazu lernen. Und Dein Alter sollte so hoch nun doch noch nicht sein. ;-)

Liebe Grüße

Felix Riesterer