2

PHP のバージョンに関係する問題があります。

URL に渡される生の文字列は次のとおりです。

?path=/2013/6/14/1371207330-SBM1_Today\'s Touch Strongsville.xls

PHP 5.3.21 では、$_GET['path'] を echo すると、(間違った) が返されます。

/2013/6/14/1371207330-SBM1_Today\\\'s Touch Strongsville.xls

PHP 5.3.15 では、正しいバージョン (正しい) を返します。

/2013/6/14/1371207330-SBM1_Today\'s Touch Strongsville.xls

PHP の新しいバージョンが追加のエスケープを追加しないようにするにはどうすればよいですか?

将来の読者のために

このエラーは PHP のバージョンとは関係がなく、2 つの異なる php インストールの構成が原因でした。私の場合、私のローカル バージョンには、magic_quotes がオフの php.ini 構成がありましたが、顧客の共有ホスティング プロバイダー (HostGator) はそれをオンにしていました。

4

2 に答える 2

8

これは (IMSoP のコメントを参照) PHP の恐ろしい機能の 1 つです。これは「マジック クォート」と呼ばれ、構成ファイルで有効または無効にできます。無効化に関する記事はこちら。

要するに、これをあなたのに入れますphp.ini

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
于 2013-06-14T23:08:11.820 に答える
0

魔法の引用符がオンになっているかどうかを確認します。

get_magic_quotes_gpc();

この関数が true を返す場合、それが問題です。php.ini http://php.net/manual/en/security.magicquotes.phpでオフにする必要があります。

于 2013-06-14T23:08:21.220 に答える