Top / PHP / magic_quotes設定を回避する

magic_quotes設定を回避する

レンタルサーバーのほとんどでは、magic_quotes機能はoffになっているのですが、一部のレンタルサーバーではセキュリティを高くする目的で、php.ini中でmagic_qoutesがonに設定され、しかもphpプログラムからoffにできないようになっていることがあります。

入力フォームに入れて確認フォームを表示させるとバックスラッシュ/があちこちに追加され、入力フォームに戻る、確認フォームに進むを繰り返すたびにバックスラッシュが//→////とねずみ算式に増えていってしまう不具合現象におちいります。

このような現象はphp処理の前に以下のコードを呼び出すようにすると、回避できて便利です。

if (get_magic_quotes_gpc()) {
  function mystrip($temp){
    if(is_array($temp){
      array_map('mystrip', $temp) ;
    }else{
      return stripslashes($temp);
    }
  }
  $_GET     = mystrip($_GET);
  $_POST    = mystrip($_POST);
  $_COOKIE  = mystrip($_COOKIE);
}

解説:get_magic_quotes_gpc関数でmagic_quotes_gpcがonかoffかを確認して、offなら何もしない。onなら、$_GET,$_POST,$_COOKIEをstripslashes関数で変換する。
$_GET,$_POST,$_COOKIEは多階層の配列の場合があるので、mystrip関数で再起呼びだしをかけているのでちょっと複雑にみえるが、基本はstripslashesで余分な\を削除させているだけ。

2019-07-01 (月) 11:39:41タグ: magic_quotes_gpc

閲覧回数 昨日:1pv TOTAL:3928pv