Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è la codifica / escaping / htmlentities corretta necessaria quando si inviano dati da js a php, da php a mysql e per le risposte json REST

Ogni volta che uso php/mysql/jquery per passare i dati avanti e indietro, finisco per usare la seguente combinazione di codifiche/escaping e sembra funzionare bene per me.

1) non devi fare nulla qui, A MENO CHE tu non stia inviando un URL (penso che questo sia solo per le richieste GET) - ma se stai inviando un URL devi usare encodeURIComponent(url), che eseguirà correttamente l'escape le &e i caratteri speciali nell'URL (vedi altro qui ).

2) Usa mysqli e parametri vincolati, farà tutto l'escape per te (leggi a riguardo qui )

3) Lo uso sempre quando faccio eco ai dati in un file HTML:

<?php
  htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>

Questo codificherà correttamente tutti i caratteri speciali (il falso è per "nessuna doppia codifica"). Assicurati anche di avere i meta tag UTF-8 corretti nella parte superiore delle tue pagine html.

4) L'uso di json_encode dovrebbe sempre sfuggire ai tuoi dati in modo corretto, ma userei il codice dal n. 3 solo per essere sicuro. Ma probabilmente ne avrai bisogno solo se stai restituendo dati con caratteri speciali.