no-image

magic_quotes_gpcを強制的に外す

var/タワゴト(2007-03-10)より

あー、誕生日DBはEthnaで組んであるのですが、 Ethnaはmagic_quotesがoffの前提で設計してあるようで、”が勝手に”となる問題が出ています。feena鯖の時は. htaccessでphp_valueセットしていたんですが、sakuraはcgiタイプで導入されているので変更できません。

そういうときは、プログラム上でmagic_quotes_gpcがonかoffかを見て自分で外してあげる必要があります。PHPには一見役に立つようで状況によっては厄介になる機能が満載でそのあたりのノウハウを知っていないとすぐムキャー!となってしまうのが困りますね。

というわけで、Ethnaを使っているなら話が早い。Filterを作ってpreFilterでquotesを外してあげましょう。最新版のEthnaだろうと古いEthnaだろうとpreFilterをいじるのは同じです。以下は自分のプロジェクト(Ethna最新版)で使ってるmagic_quotes_gpcを外すPlugin_Filterです。

参考にしてFilterを作ってみてください。目の前の問題がこれだけならば、新しく実装するよりも工数は少ないと思います。


class Anubis_Plugin_Filter_MagicQuotesGPC extends Ethna_Plugin_Filter
{
    /**
     *  実行前フィルタ
     *
     *  @access public
     */
    function preFilter()
    {
        if (ini_get('magic_quotes_gpc')) {
                $_GET = $this->stripslashes_deep($_GET);
                $_POST = $this->stripslashes_deep($_POST);
                $_COOKIE = $this->stripslashes_deep($_COOKIE);
        }
    }
    function stripslashes_deep($value)
    {
        $value = is_array($value) ?
            array_map('stripslashes_deep', $value) :
            stripslashes($value);
        return $value;
    }
}