Telkens wanneer ik php/mysql/jquery gebruik om gegevens heen en weer door te geven, gebruik ik uiteindelijk de volgende combinatie van coderingen/escapings, en het lijkt goed voor mij te werken.
1) u hoeft hier niets te doen, TENZIJ u een URL verzendt (ik denk dat dit alleen voor GET-verzoeken is) - maar als u een url verzendt, moet u encodeURIComponent(url) gebruiken, die correct zal ontsnappen de &'s en speciale tekens in de url (zie hier ).
2) Gebruik mysqli en gebonden parameters, het zal al het ontsnappen voor je doen (lees erover hier )
3) Ik gebruik dit altijd bij het herhalen van gegevens in een HTML-bestand:
<?php
htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>
Hiermee worden alle speciale tekens correct gecodeerd (de false is voor "geen dubbele codering"). Zorg er ook voor dat u de juiste UTF-8-metatags bovenaan uw html-pagina's plaatst.
4) Het gebruik van json_encode zou altijd goed moeten ontsnappen aan uw gegevens, maar ik zou de code van #3 gebruiken om er zeker van te zijn. Maar je hebt het waarschijnlijk alleen nodig als je gegevens retourneert met speciale tekens erin.