2010-11-19 15 views
1

二重引用符を自動的にエスケープするPHP設定を誰かが知っているのだろうかと思います。二重引用符を自動的にエスケープするPHP設定がありますか?

私の問題は私のローカルサーバー上で、私は、サーバーにこの文字列を掲示していますということです。

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

をし、それが正常に動作します。しかし、本番サーバー上で、私は同じ文字列を掲示し、私はそれをエコーし​​たときにそれが変更されます。

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

私はstring_replace()の呼び出しでそれを修正するために管理しますが、私は理由を知りたいですこれは事件です。プロダクションサーバーとローカルサーバーは同じコードを使用していて、同じデータを使用するように更新されているため、サーバーの設定によってディスクリフェンシーが発生している必要があると仮定していますが、

誰もこのような経験はありますか?

答えて

11

はい。マジッククオートを呼ばれています:

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

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

あなたは、一般的にこれをオフにして、手動で必要に応じてエスケープ処理したいです。

+3

+1(私にそれを打つ)。私も[この文書のセクション](http://php.net/manual/en/security.magicquotes.php)を通して読むことをお勧めします... – ircmaxell

+0

@ircmaxellありがとう、私は私の答えにそのリンクを追加しました:) –

+0

ありがとうございました。さて、皆さんに言わせていただきましたが、私は魔法の引用について多くのことを聞いてきましたが、私は彼らが何をしているのか正確には理解していなかったと思います。私たちは、SQLインジェクションから保護するための他の方法を使用して、問題ではないはずです。私は問題を理解せずに何かを修正すると本当に嫌いなので、もう一度感謝します! –

-3

あなたは、これは一般的に「マジッククオート」の問題であるダブル

+1

一重引用符もエスケープされます。彼はmagic_quotes_ *をオフにする必要があります。 –

2

のではなく、ポストされたデータに単一引用符を使用することを試みることができます。彼らは悪です、IMO。可能であればshould disable themです。

これらは、SQLインジェクション攻撃からあなたを守るためのものです。無効にした後は注意してください。

+2

SQLインジェクション攻撃からの保護にはそれほど効果的ではありません。したがって、あなたがそれらに依存していたとしても、あなたのコードの監査はとにかく行う必要があります。 :) – Quentin

+0

ファクト:私は過去にmysql_real_escape_stringを使用しましたが、その後PDO/Active Recordに移動しました。 PDOは、一度それを取得するとかなりいいです。 – jocull

関連する問題