2010-08-18 10 views
0

Juste une petite question. Je veux envoyer des données de Javascript à un script PHP pour les stocker dans ma base de données, puis les récupérer de la même façon (un script appelle une fonction PHP, et les données sont renvoyées avec JSON).Echapper des caractères spéciaux

Quelle fonction dois-je utiliser dans le javascript? Je ne devrais jamais avoir besoin d'obtenir les données uniquement avec PHP, alors est-il correct d'utiliser escape(string); puis unescape(encoded_string); pour afficher?

Merci.
Salutations de la France;)

EDIT: Vous avez oublié de mentionner: Les données sont une chaîne à partir d'une entrée d'utilisateur (d'où les problèmes de sécurité)

Répondre

2

Utilisation encodeURIComponent() pour la transmission dans une URL.

function sendData(str) 
{ 
    var url = "http://myserver.com/upload?data="+encodeURIComponent(str); 
    ajax(url); 
} 

Lorsque les données est envoyé au serveur, le serveur doit automatiquement unencode les données qui a été envoyé dans l'URL, de sorte que vous n'avez pas besoin de le faire manuellement. (Je ne suis pas trop familier avec PHP, cependant, quelqu'un me corrige si je me trompe.) Vous n'avez pas non plus besoin de coder les données envoyées au client, car elles ne sont pas envoyées dans une URL.

Juste un mot d'avertissement:

Si vous escape() les données, puis unescape() plus tard, toutes les balises HTML, javascript et d'autres choses que l'utilisateur est entré seront remis en état exactement comme ils étaient. Veillez donc à supprimer ces éléments avant d'afficher les données.

Voir aussi: http://xkr.us/articles/javascript/encode-compare/

+0

La chose est, j'envoie les données en utilisant la fonction .getJSON() $ jQuery, en lui donnant une carte des pramaeters, y compris le corps du message. Donc le 'encodeURIComponent()' ne suffit pas, car rien n'est fait aux guillemets, seulement aux caractères spéciaux comme é, è, à, $, #,!,?, ... – 3rgo

+0

@ Squ36 'encoderURIComponent()' code tout sauf ~! *() ', mais JSON utilise normalement des guillemets doubles (") de toute façon, ce qui ne devrait pas poser de problème. vous ne devriez pas avoir besoin de les remplacer. – Na7coldwater