Mysql_real_escape_string () non dovrebbe lasciare delle barre nel database?
Domanda
Sto usando smarty e mysql_real_escape_string ()
per l'input dell'utente,
e quando inserisco del codice con '
o "
e cerco in phpmyadmin
mostra senza barre rovesciate.
Quando ottengo i record da DB non ho anche le barre rovesciate. Ma quando passo solo una stringa di escape senza inserirla nel db è rovesciato.
Non dovrebbe aggiungere barre, inseriscile e poi vorrei spogliarli quando avrei prodotto? O mi sto perdendo qualcosa?
Soluzione
Ti manca: la fuga con barre rovesciate ha lo scopo di garantire che le query non siano malformate, ad es. qualcosa del genere si romperà sicuramente e probabilmente rischierà iniezioni di SQL:
insert into table values ('whatever 'this' is')
e nulla verrà salvato nella tabella, mentre questo:
insert into table values ('whatever \'this\' is')
salverà il valore "qualunque sia" questo "è" nella tabella.