1)
...anche perchè se le passi come secondo parametro l'id di connessione al db tiene conto anche del charset.
Non ho capito, cosa intendi?
2) Dal sito ufficiale sembra che non faccia l'escape dei soli caratteri % e _ (ma dalle prove come dici tu non fa l'escape nemmeno di , e ; per cui è meglio prevederlo)
3) Inoltre come l'hai messa tu mi andrebbe a togliere quei caratteri (% _ ,
dall'intera query che non va bene perchè se voglio fare ad esempio una ricerca con LIKE devo poter utilizzare il carattere percentuale; credo che il modo corretto sia fare il parsing dei soli parametri passati dai form.
4) Inoltre il magic_quotes_gpc() potrebbe essere attivato per cui forse è meglio controllare.
Per tutte queste considerazioni direi che la versione potrebbe essere:
codice:
$login=mysql_real_escape_string($login);
$escape_chars=array('%', '_', ',', ';');
if (gpc_magic_quotes()) {
$login = stripslashes($login);
}
foreach($escape_chars as $char) {
$login=str_replace($char, "\\$char", $login);
}
$query = "SELECT * FROM utenti WHERE utenti.login = '$login';";
Oppure si potrebbe anche eliminare il carattere anzichè commentarlo.
Correggimi se sbaglio ovviamente.
ciao