Geeklog.netの掲示板から,プレビュー時・保存時にクォーテーションマークの前に余分なバックスラッシュがつくんだけどというレスがあった。調べてみると,案の定,magic_quotes_gpc がオンになっているサーバーのようだ。Geeklog本体の COM_stripslashes() を使ってもよいけど,変数の数が多いので,array_map()と stripslashes() を使った。
これで一安心と思ってマニュアルを眺めていると,magic_quotes_runtime や magic_quotes_sybase の設定によってもエスケープされるデータソース・方法は様々に変化するらしい。特に,前者がオンの場合,データベースやテキストファイルからの入力でもクォートはバックスラッシュでエスケープされると書いてある。きちんと対応するのはかなり面倒だ。
某有名メーカーのワープロソフトの自動書式設定じゃないが,magic_quotes_gpc は小さな親切大きなお世話の典型だろう。
そういえば,メーリングリストでも,Oliverさんが「Geeklogには無駄な stripslashes()が山のようにあるから,なくせるものはなくしたら? データベースから取り出した変数に stripslashes() するのは明らかに無意味でしょ」という趣旨の発言をされていた。日ごろから自分もそう感じていたので,他の開発者の反応を楽しみしていると,「データベースから取り出した変数に stripslashes()を使う必要があるよ」というレスが返ってきた。なぜ? ひょっとして,magic_quotes_runtime = on を前提にしているのだろうか?
タグ:
テーマエディタ プラグイン stripslashes php