dedlfix: PHP Post (Filter) auch für Array

Beitrag lesen

Hi!

für unsere per POST übergebenen Daten habe ich einen kleinen Filter gebastelt:

function filter($data) {
$data = trim(htmlspecialchars(strip_tags($data)));

if (get_magic_quotes_gpc())
$data = stripslashes($data);

$data = mysql_real_escape_string($data);

return $data;
}

soweit so gut,

Würde ich nicht behaupten. Erstens werden die Magic Quotes von PHP zuletzt hinzugefügt, sollten also zuerst entfernt werden. Dann ist es nicht sinnvoll, Daten generell und noch dazu für zwei verschiedene Ausgabemedien aufzubereiten. Es ist günstiger, solange wie möglich mit Rohdaten zu arbeiten, weil dann auch String-Funktionen wie Zeichen zählen richtig arbeiten können. Siehe: HTML in der Datenbank. Weiterhin bist du erst an der Stelle Eingabedatenverarbeitung und wirst vermutlich noch keine Verbindung zu einem MySQL-Server geöffnet haben, was aber von der Funktion mysql_real_escape_string vorausgesetzt wird. Anderenfalls öffnet sie eine Verbindung mit irgendwelchen Default-Daten.

nachdem ich gestern ein Multibel Textfeld eingeführt habe, kann das aufgrund der Übergabe im Array natürlich so nicht mehr funktionieren.
Gibt es vielleicht eine PHP Funktion die feststellen kann ob die Übergabe ein Array oder ein String ist? So das ich dann den Filter steuern kann?

Natürlich, zu finden unter den Variable handling functions. Aber ich würde mir das mit der Eierlegenden-Wollmilchsau-"Filter"-Funktion noch einmal überlegen und stattdessen erst dann den jeweiligen Kontext berücksichtigen, wenn die Daten wirklich in diesen überführt werden sollen.

Lo!