Hallo Steffen,
aus meiner Sicht: Keinesfalls so machen.
Was definitiv NICHT zu empfehlen ist, ist ein extract(). Wenn dir jemand "böse" Feldnamen postet, überschreibt er Dir damit deine eigenen Variablen. Lass die Werte in $_GET und $_POST stehen und verarbeite sie von dort aus.
Es ist auch Unsinn, Benutzereingaben zu maskieren, wenn kein Kontextwechsel stattfindet. Wenn Dir jemand "Spaß & Freude" postet, willst Du das & auch in deinem PHP String sehen. Wenn dir jemand Steffen"; DROP TABLE students;
postet, willst Du das im PHP ebenfalls genau so sehen - aber deine Datenbank soll das bitte nicht ungefiltert abbekommen. Bekommst Du <script src="https://evil.ru/kill.js"></script>
, kannst Du das getrost im PHP verarbeiten und musst für das Speichern in der DB nur die " maskieren. Erst wenn's zum Browser geht, wird es brenzlig.
Also: der erste relevante Kontextwechsel findet beim Speichern in der DB statt, und da musst Du eh die Escape- (oder Quote-)Funktion des DB Treibers nehmen. Der zweite relevante Kontextwechsel ist die Ausgabe ins HTML. DORT nimmst Du htmlspecialchars(), und zwar NUR das.
Rolf
sumpsi - posui - obstruxi