マジック引用符は、PHPer にとってよくある質問です。今日偶然見かけた記事と、PHPマニュアルとその返信を合わせて簡単にまとめてみます。 つまり、Magic quotes をオンにすると、入力されたデータが自動的にエスケープされます。このうち、一重引用符 ()、二重引用符 (")、バックスラッシュ、および NULL 文字はすべてエスケープされます (バックスラッシュが追加されます)。実際、この操作は基本的に addslashes 関数を呼び出します。 マジック引用符を使用する理由 初心者に最適 「閉じる権限がありません」 マジック引用符を使用しない理由 パフォーマンスの問題 混乱の原因 PHP6 はサポートされなくなりました マジック引用符を無効にする方法 ; マジック クォート;; 受信 GET/POST/Cookie データのマジック クォート。magic_quotes_runtime = Off; SQL からのデータなど、実行時に生成されるデータ。 quotes ( の代わりにエスケープします).magic_quotes_sybase = Off ただし、オンラインホストでは php.ini ファイルの変更が許可されていない場合があるため、.htaccess ファイルを使用して無効にし、次のコードを追加できます php_flag magic_quotes_gpc Off 上記の移植可能なコードの場合、magic_quotes が無効かどうかに関係なく、データの一貫性が維持される必要があります。以下のコードが役に立ちます
便利で速い
PHP の設計者は、設計の初めに、高速で便利なプログラミングを想像していました。たとえば、データベースに挿入する場合、Magic quotes は自動的にデータをエスケープします。これは非常に便利です。
魔法の引用符を使用すると、初心者をスクリプトのセキュリティ リスクからある程度取り除くことができます。たとえば、保護手段のないコードでは、マジック引用符を有効にすると、インジェクションの問題などのリスクが大幅に減少します。もちろん、この方法だけではこうしたセキュリティ上の問題を完全に防ぐことはできません。
もちろん、この問題に気づいているかもしれませんが、ホスト スペースは完全に制御できるわけではありません。
移植性
この機能がオンになっているかどうかに関係なく、その後のデータのフィルタリング操作に影響を与えるため、スクリプトの移植性に影響します。
すべての外部データは取得前にエスケープされるため、間違いなく実行時のコストが増加します (すべてのデータをエスケープする必要があるわけではありません)。
上で述べたように、すべてのデータをエスケープする必要があるわけではありません。発生する可能性のある状況の 1 つは、エスケープされていないデータを取得するためにストリップスラッシュ関数「crazy」を使用する場合です。
PHP の設計者は明らかに自分たちの「間違い」に気づいたので、PHP6 でそれを非推奨にしました。
私の意見では、php.ini 設定ファイルを使用してマジック引用符をグローバルに無効にするのが最も確実です。以下のコードを参照してください