私たちは
を使用しています。PHP には、' (一重引用符)、" (二重引用符)、(バックスラッシュ)、および NULL 文字を自動的に転送できる 3 つの設定があります。
PHP ではこれをマジック クオートと呼びます。この 3 つの設定は、
magic_quotes_gpc
は HTTP リクエスト データ (GET、POST、COOKIE) に影響します。PHP のデフォルト値はオンです。
magic_quotes_runtime
オンにすると、データベースやテキスト ファイルなどの外部ソースからデータを取得するほとんどの関数が影響を受けます。このオプションは実行時に変更できます。PHP のデフォルト値はオフです。
magic_quotes_sybase
オンにすると、バックスラッシュの代わりに一重引用符が使用され、magic_quotes_gpc が完全にオーバーライドされます。両方のオプションをオンにすると、一重引用符がエスケープされます。二重引用符、バックスラッシュ、および NULL 文字はエスケープされません。 特殊記号の自動 PHP 引用符エスケープを実装すると便利ですが、これによりプログラムの効率が低下し、プログラムの移植性が難しくなります。サーバーの ini 設定がわからない場合は、get_magic_quotes_gpc()、get_magic_quotes_runtime()、または ini_get() を呼び出してステータスを検出する必要もあります。 例:<ol class="dp-xml"> <li class="alt"><span><span>if (!get_magic_quotes_gpc()) { </span></span></li> <li> <span>$</span><span class="attribute">lastname</span><span> = </span><span class="attribute-value">addslashes<br></span><span>($_POST['lastname']); </span> </li> <li class="alt"><span>} else { </span></li> <li> <span>$</span><span class="attribute">lastname</span><span> = $_POST['lastname']; </span> </li> <li class="alt"><span>} </span></li> </ol>したがって、PHP のマジック クォートをオフにし、手動で addslashes()、stripslashes() を使用して、状況に応じて PHP クォート エスケープをエスケープしたりキャンセルしたりするのが最善です。 discuz から学び、設定ファイルに set_magic_quotes_runtime(0) を追加してエスケープをキャンセルできます。