2011年07月01日

POST送信時にバックスラッシュが付加される現象

フォームのPOST送信時に、グローバル変数$_POSTに入っているデータのうち、シングルクォーテーション等にバックスラッシュが入ってしまう現象が発生。

phpに関する情報を探っているとphp.iniのmagic_quotes_gpcがonになっていると勝手に付加される模様。

POSTデータを処理する際にget_magic_quotes_gpcでonかoffかを調べて、offの時に addslashes で付加する処理を作成

 $str=$_POST["data"];
 if (get_magic_quotes_gpc()) {
   $ret =  $str;
 } else {
   $ret= addslashes($str);
 }		}

しかし、失敗に終わる。get_magic_quotes_gpc が0(ゼロ)にもかかわらず。

さらに調べると、どうやらwordpressの方が勝手に addslashes を行っているようだ。

/wordpress/wp-settings.php にて wp_magic_quotes() という関数を呼んでいて、その中の処理で get_magic_quotes_gpc が on の場合は削除してから付加するといった事をしていた。

/wordpress\wp-includes/load.phpにて

function wp_magic_quotes() {
  // If already slashed, strip.
  if ( get_magic_quotes_gpc() ) {
    $_GET    = stripslashes_deep( $_GET    );
    $_POST   = stripslashes_deep( $_POST   );
    $_COOKIE = stripslashes_deep( $_COOKIE );
  }
  // Escape with wpdb.
  $_GET    = add_magic_quotes( $_GET    );
  $_POST   = add_magic_quotes( $_POST   );
  $_COOKIE = add_magic_quotes( $_COOKIE );
  $_SERVER = add_magic_quotes( $_SERVER );
  // Force REQUEST to be GET + POST.
  $_REQUEST = array_merge( $_GET, $_POST );
}

んー、じゃあwpを使っている限りはバックスラッシュが必ず付いている前提でいいってことかな?

posted by たかぽんのあいてぃ at 13:33| Comment(0) | カスタムフィールドテンプレート | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。