Ciao,
io devo filtrare del testo inviato dagli utenti, che viene inserito nel database per poi essere pubblicato.
Ho letto che bisognerebbe fare l’escape anche dei caratteri % e _. Siccome mysqli_real_escape_string() non lo fa, dopo di essa ho messo strtr() per ovviare al problema:
Però nel database vengono salvati i baskslash e quindi vengono visualizzati nella pagina davanti a % e _.Codice PHP:$post = mysqli_real_escape_string($conn,$post);
$post = strtr($post, array('_' => '\_', '%' => '\%'));
Da questa tua pillola ho visto che potrebbe essere dovuto al fatto che l’escape dei due caratteri è stato eseguito due volte, e che quindi strtr() non servirebbe. Ma oltre a strtr() che cosa può essere stato ad eseguire l’escape dei due caratteri? Non può essere stata mysqli_real_escape_string() perché ho fatto una prova senza di essa e non cambia nulla.
O forse, più semplicemente, % e _ non vengono considerati come caratteri sui quali eseguire l’escape e quindi un \ davanti ad essi viene trattato come un carattere normale? Ma in tal caso allora come mi devo regolare nei confronti di questi due caratteri?
Grazie.

Rispondi quotando