マジッククオートを無効にする独自のPHP関数

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

PHPには、マジッククオートと呼ばれる無駄な機能があります。
PHPのmagic_quotes_gpcがオンになっていると、マジッククオートが有効になってしまい、フォームから渡されたデータに対し、内部的にaddslashes()関数が実行されます。

スポンサーリンク

この結果、たとえば単一引用符「’」は、「\’」と、バックスラッシュがついて自動的にエスケープされます。
サブミット済みのフォーム入力データを、HTML上に出力した場合などは、余計な「\」(バックスラッシュ)がついて、とても不便です。

マジッククオートがオンの場合、stripslashes()関数を使いアンエスケープした後、htmlentities()やhtmlspecialchars()でHTMLエスケープすると、HTML上への出力が上手く行きます。
以下は、頻繁に使うstripslashes()関数のコードを、簡単にする独自の関数定義です。

/********* w_gmss()関数 **********
マジッククオートが有効な場合は、
stripslashesでアンエスケープ。
@パラメータは以下の1つ
$str        文字列
**********************************/
function w_gmss($str) {
    if (get_magic_quotes_gpc()) {
        if (is_array($str)) {
            return array_map("w_gmss", $str);
        } else {
            return stripslashes($str);
        }
    } else {
        return $str;
    }
}

フォームから渡されたデータを、HTML上に出力する場合は、以前定義したHTMLエスケープを簡単にするPHP関数とともに使って・・・

$escape_str = w_he(w_gmss($str));

とすれば、マジッククオートをオフにした後、HTMLエスケープすることができます。

スポンサーリンク
 
スポンサーリンク