get_magic_quotes_gpc

関数の概要

get_magic_quotes_gpc は、PHPの設定オプションである magic_quotes_gpc の現在の状態を確認するための関数です。magic_quotes_gpc は、GET、POST、COOKIE データに自動的にエスケープ処理(バックスラッシュ挿入)を行う機能ですが、PHP 5.4.0 以降は廃止されています。

この関数を使うことで、スクリプト内で magic_quotes_gpc が有効かどうかを判別し、エスケープの重複を避けるなどの処理分岐が可能でした。

パラメータの説明

  • パラメータはありません。

戻り値

戻り値は bool 型で、true の場合は magic_quotes_gpc が有効、false の場合は無効を意味します。

使用例

基本的な使い方

<?php
if (get_magic_quotes_gpc()) {
    echo "magic_quotes_gpc は有効です。";
} else {
    echo "magic_quotes_gpc は無効です。";
}
?>

このコードは、現在の設定状態を判定して、有効か無効かを表示します。

フォームデータをエスケープの重複なしに処理する例

<?php
if (!get_magic_quotes_gpc()) {
    $name = addslashes($_POST['name']);
} else {
    $name = $_POST['name']; // すでに自動エスケープされている
}
echo "入力された名前: " . $name;
?>

magic_quotes_gpc が無効な場合は、自分で addslashes() を使ってエスケープしています。有効な場合は二重エスケープを避けるためにそのまま利用します。

配列データのエスケープ解除例

<?php
function stripslashes_deep($value) {
    return is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
}

if (get_magic_quotes_gpc()) {
    $_POST = stripslashes_deep($_POST);
}
?>

GETやPOSTの配列データに対して自動的に挿入されたバックスラッシュを再帰的に削除し、元のクリーンなデータを取得しています。

関連する関数

  • set_magic_quotes_runtime – 実行時のマジッククォートを設定(非推奨)
  • addslashes – 文字列にバックスラッシュを追加する
  • stripslashes – バックスラッシュを取り除く
  • ini_get – PHP設定値を取得する(代替手段)

まとめ

get_magic_quotes_gpc は、PHPの旧設定 magic_quotes_gpc が有効かどうかを判定するための関数です。magic_quotes_gpc は自動エスケープ機能として長らく使われてきましたが、予期せぬ動作を防ぐために非推奨となり、PHP 5.4 からは廃止されました。現在は多くの環境で無効になっており、セキュリティ対策としては明示的にエスケープ関数を使うことが推奨されます。

もしレガシーコードをメンテナンスしている場合は、この関数を使ってマジッククォートの影響を制御することが役立つでしょう。