criric: era giusto così. Se le magic quotes erano attivate allora toglieva gli slash già inseriti da PHP, quindi ne aggiungeva altri.
Piuttosto direi che la funzione può essere migliorata così:
PHP:
function filter($data, $trim = true, $sanitize = true)
{
$data = $sanitize ? filter_var($data, FILTER_SANITIZE_STRING) : $data;
$data = $trim ? trim($data) : $data;
$data = !get_magic_quotes_gpc() ? mysql_real_escape_string($data) : $data;
return $data;
}
Ho aggiunto i parametri perché ci sono delle situazioni in cui non vuoi alterare la stringa (tranne i controlli per le SQL injection), per esempio in caso l'utente inserisca una password contenente spazi all'inizio o alla fine, oppure caratteri speciali che sarebbero eliminati da
filter_var.
In questo caso non dovrebbe neanche essere necessario usare la funzione
filter, tanto che la password è criptata e quindi non può costituire un pericolo per il database.
Tuttavia funzioni del genere sono inutili quando PHP offre librerie come PDO che mettono a disposizione le
prepared statement.
mysql è di fatto deprecata e il suo utilizzo in applicazioni di nuova generazione è fortemente sconsigliato.