blog personale

Vedo spesso dei siti dove ci sono errori nelle query, specialmente in query di insert.

Il problema è dovuto agli inserimenti di stringhe contenenti caratteri usati come separatori per le query (apici o virgolette).

quindi vengono usati addslashes che sconsiglio fortemente, soprattutto se vogliamo creare applicazioni  web portabili su più server e indipendenti dalla versione mysql e codifiche installate.

Da sapere:

la direttiva magic_quotes di php aggiunge slash ai caratteri apici e virgolette ai dati POST GET e COOKIE, quindi consentirebbe a semplici query di agire correttamente. Sbagliato !! è una impostazione per principianti, poi avrete probabilmente problemi a seconda dei caratteri che usate come separatore nella query e sarete vincolati alla versione di mysql e codifica. Se è abilitata (e lo controllate con get_magic_quotes_gpc() ) , fate uno stripslashes ai dati in POST/GET/COOKIE e processate invece i campi con

mysql_real_escape_string

(PHP 4 >= 4.3.0, PHP 5)
mysql_real_escape_string –  Aggiunge le sequenze di escape ai caratteri speciali in una stringa per l’uso in una istruzione SQL, tenendo conto dell’attuale set di caratteri della connessione.

poi la query la eseguite usando gli apici singoli (non virgolette !) come separatori

$testo = mysql_escape_string($_POST['testo', $conn]);
$q = "INSERT INTO `tab` (`id`, `testo`) VALUES ( ‘3′, ‘$testo’ )";

 


Leggendo sui forum, vedo che la soluzione a questo comune problema (chi ha usato php con database prima ne avrà sicuramente avuto a che fare) è convertire i caratteri in entità html e salvarli nel database. Sbagliato ! Nel database va salvato esattamente quello che inseriamo, poi in lettura ci applichiamo le htmlentities() e simili. Questo è praticamente obbligatorio per creare form di editing con vari controlli riempiti di valori già inseriti ed eviterà moltissimi problemi.

 

 

Leave a comment

Name: (Required)

E-mail: (Required)

Website:

Comment:

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word


 

Ultimi post

About Me

Blog tecnico/geek di Elvis. Chi sono ? studente & web developer freelance. Vedi la pagina "about me" per altre info.

scontiPHP