4

このディレクティブの名前を見ると、とスーパーグローバルmagic_quotesにのみ適用されていると思うかもしれませんが、PHPマニュアルには1つの混乱したコメントがあります$_GET$_POST$_COOKIE

を設定すると 、、、、、配列の値がスラッシュされるmagic_quotes_gpcだけ $_POST$_GETはないことに注意してください 。実際には、配列内のすべての文字列値はスラッシュされます。 (または )。$_REQUEST$_COOKIE$GLOBALS$GLOBALS['_SERVER']['PATH_INFO']$_SERVER['PATH_INFO']

誰かがこれが本当であることを確認できますか?スーパーグローバル、、、$GLOBALSおよびも影響を受けますか$_SERVER$_FILES$_SESSION$_ENV

もう1つの質問ですが、配列を反復処理する場合、stripslashes()配列$_GETも反復処理する必要がありますか?または、変更は自動的に反映されますか?$_POST$_COOKIE$_REQUEST

4

2 に答える 2

2

いずれにせよ、新しいPHPバージョンでは非推奨になっているため、GPCに依存しないことをお勧めします...

それはあなたの質問にはあまり関係がないかもしれませんが、SQLセキュリティの代替案の提起された問題については、私は通常、MySQL用にプリペアドステートメント+mysql_real_escape_stringを使用します。

完全に近づけるには、整数、ブール値、null値もサポートする必要があるため、いくつかの関数が必要ですが、NaturePhpのDatabaseクラスとDatabase_mysqlクラスのソースコードを確認できます。

于 2010-01-08T16:50:30.807 に答える
2

私はいくつかのテストを実行しましたLightTPD 1.4.20PHP 5.3.0、変更されmagic_quotes_gpc = Onていません$_SERVER(少なくとも変更されて[SERVER_NAME] => local'hostいません)。$_SESSIONまた、magic_quotesの影響を受けません。

$_GET、、および影響を受けました(およびそれらの$_POST対応物)。$_COOKIE$_REQUEST$GLOBALS

また、スーパーグローバルの変更GPCは自動的にに反映されません$_REQUEST

$_FILESとスーパーグローバルに関しては、$_ENVATMをテストすることはできません。


私はついにこのテストを実行しましたが、驚いたことに、両方とも$_FILES影響を受けphp://input ています。

于 2010-01-07T23:15:35.697 に答える