da ich gerade das backend von nem onlineshop umschreibe, wollte ich mal ein recht allgemeines problem ansprechen:
die überprüfung von variablen bzw. arrays, welche von formularen übergeben werden;
folgende problemstellung:
ein formular, mit sagen wir mal 5 eingabefeldern (sehr einfaches formular mit nur 5 feldern), wird abgesendet;
das ziel ist ein php-skript, welches mit den variablen diverse aktionen durchführen soll;
nun zum problem: es gilt generell vor beginn jeglicher aktion das übergebene $_GET- bzw. $_POST-Array grob von möglichen schädlingen zu reinigen und es für evtl. abfragen vorzubereiten.
hierzu findet man sehr häufig folgenden lösungsansatz:
// Variablen Deklaration if (!isset($_POST['kategorie'])) $_POST['kategorie'] = ""; if (!isset($_POST['name_k'])) $_POST['name_k'] = ""; if (!isset($_POST['main_name'])) $_POST['main_name'] = ""; if (!isset($_POST['sort'])) $_POST['sort'] = ""; if (!isset($_POST['start'])) $_POST['start'] = ""; $_POST['neu_kategorie'] = htmlentities($_POST['neu_kategorie'],ENT_QUOTES,'utf-8'); $_POST['neu_artikelnummer'] = htmlentities($_POST['neu_artikelnummer'],ENT_QUOTES,'utf-8'); $_POST['neu_name'] = htmlentities($_POST['neu_name'],ENT_QUOTES,'utf-8'); $_POST['neu_beschreibung'] = htmlentities($_POST['neu_beschreibung'],ENT_QUOTES,'utf-8'); $_POST['neu_preis'] = htmlentities($_POST['neu_preis'],ENT_QUOTES,'utf-8');
das obige listing kann sich bei zunehmender anzahl von variablen und konstrollstrukturen natürlich drastisch vergrößern;
da ja jeder programmierer generell schreibfaul ist, hier nun mein kleiner ansatz zur problemlösung:
// Variablen Deklaration foreach ($_POST as $postkey => $postvalue){ if (!isset($postkey)){ $_POST[$postkey] = ""; }else{ htmlentities($_POST[$postkey],ENT_QUOTES,'utf-8'); } }
analog natürlich erweiterbar mit diversen weiteren validierungsfunktionen.
nun würde mich speziell noch interessieren, was ihr von einer solchen umsetzung haltet?
gruss
scorp
betroffene Homepage: externer Link