2010-11-19 5 views
1

Je me demande si quelqu'un connaît un paramètre PHP qui va automatiquement échapper les guillemets doubles.Y at-il une configuration PHP qui va automatiquement échapper les guillemets doubles?

Mon problème est que sur mon serveur local, je signale cette chaîne au serveur:

{"0":{"id":"19","goal":"34"},"1":{"id":"22","goal":"657675"},"2":{"id":"21","goal":"456"}} 

et il fonctionne très bien. Cependant, sur le serveur de production, je posterai la même chaîne, et quand je l'écho sur elle est changée en:

{\"0\":{\"id\":\"19\",\"goal\":\"34\"},\"1\":{\"id\":\"22\",\"goal\":\"657675\"},\"2\":{\"id\":\"21\",\"goal\":\"456\"}} 

J'ai réussi à le fixer avec un string_replace() appel, mais je voudrais savoir pourquoi Cela arrive. Le serveur de production et le serveur local utilisent le même code et ont été mis à jour pour utiliser les mêmes données, donc je suppose que la différence doit être provoquée par les paramètres du serveur, mais je n'ai jamais entendu parler d'un paramètre qui le fait.

Est-ce que quelqu'un a déjà vécu quelque chose comme ça?

Répondre

11

Oui. Il appelle les guillemets magiques:

http://php.net/manual/en/security.magicquotes.php

http://php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc

Vous voulez généralement désactiver cette et gérer manuellement échapper au besoin.

+3

+1 (bat-moi dessus). Je vous recommande également de lire [cette section de document] (http://php.net/manual/en/security.magicquotes.php) ... – ircmaxell

+0

@ircmaxell Merci, j'ai ajouté ce lien à ma réponse :) –

+0

Merci beaucoup. Maintenant que vous en parlez, j'ai beaucoup entendu parler de citations magiques, mais je suppose que je n'ai pas compris exactement ce qu'elles font. Nous utilisons d'autres méthodes de protection contre l'injection SQL, ce qui ne devrait pas poser de problème. Je déteste vraiment quand je répare quelque chose sans comprendre le problème, alors merci encore! –

-3

Vous pouvez essayer d'utiliser des guillemets simples dans les données affichées plutôt que le double

+1

Les guillemets simples seront également échappés. Il doit désactiver magic_quotes_ *. –

2

Cela est généralement un problème avec « guillemets magiques ». Ils sont mauvais, OMI. Vous should disable them si possible. Ils ont pour but de vous protéger des attaques par injection SQL. Soyez donc prudent après les avoir désactivés.

+2

Cependant, ils ne sont pas très efficaces contre les attaques par Injection SQL, donc si vous dépendiez d'eux, vous devez quand même faire un audit de votre code. :) – Quentin

+0

Fait. J'ai utilisé mysql_real_escape_string par le passé, mais je suis depuis passé sur PDO/Active Record. PDO est plutôt sympa une fois que vous avez compris. – jocull

Questions connexes