Originariamente inviato da oly1982
ecludendo l'utilizzo del PDO...
il filtro fatto con trim(addslashes(htmlentities($nome))) non è corretto.
- SE DEVI INSERIRE UNA STRINGA IN UN CAMPO VARCHAIR/TEXT DEL DB
è necessario verificare che get_magic_quotes sia impostata su OFF (in caso contrario eseguite lo stripslashes) ed eseguire mysql_real_escape_string()
Codice PHP:
<?php
function EscapeString($string)
{
if(get_magic_quotes_gpc())
{
$string = stripslashes($string);
return mysql_real_escape_string($string);
}
else
{
return mysql_real_escape_string($string);
}
}
?>
Fonte:
http://www.mtxweb.ch/php_learn/?p=864
- PROBLEMI CON LO CHARSET
vi deve essere una coerenza fra charset della pagina (impostata con metatag) e del db
pertanto in fase di estrazione dovrai unicamente utilizzare sripslashes per rimuovere gli slash inseriti in fase di INSERT
- ULTERIORI FILTRI
in
fase di stampa a video potresti voler "immunizzare" il codice presente nel db.
Ad esempio se nel db hai salvato dell'HTML che vuoi venga stampato a video ed interpretato non dovrai fare nulla (ad esempio un post di un blog salvato nel db e formattato in HTML).
Se al contrario vuoi che l'HTML non sia intepretato ma semplicemente stampato a video (come accade con i post in questo forum) utilizzerai htmlspecialchars()
che trasforma < > & " ' nelle relative entità HTML quindi il codice (HTML / JS/ ETC ETC) verrà visualizzato e non intepretato.
Se invece vuoi rimuovere del tutto i tags utilizzerai striptags()... ma, ad esempio, in un forum come questo sarebbe paradossale eliminare del tutti i tag postati dagli utenti che si troverebbero impossibilitati a postare codice...
htmlentities() è una funzione più "complessa" e serve per convertire tutti i caratteri nell'entità HTML a secondo dello charset indicato. Questa è utilizzata quando vi è una discrepanza fra lo charset della pagina e quello del db (ad esempio quando si ha a che fare con arabo, cinese, etc etc).
-------------
Come puoi capire conoscendo le funzioni e il loro scopo devi applicare quelle opportune e non fare un'accozzaglia generale.
Tieni presente che quello che ti ho detto è una sintesi molto succinta...