0

この質問にいくらか答えられたら申し訳ありませんが、私が見るところどこでも答えは変わっているようです。

私は、データベースとの間でデータを処理する方法を100%確信していません。

例:UTF8mysqlデータベースとユーザー入力を受け取るフォーム。

投稿を処理するときはhtmlspecialchars('data',ENT_QUOTES)、データベースに保存する前にデータを保存する必要がありますか、それとも生で保存するだけですか。データには、特殊な文字のumloutsなどが含まれている可能性があります。したがって、サニタイズが行われない場合は<>すべてのタイプの見積もりがそのまま保存されると思います。

また、保存する必要がありますか、addslashesそれともmysql_real_escape_string保存する前に行う必要がありますか。

または、これらすべてを出力で実行し、入力にフィルタリングを使用する場合は、zendを使用するため、ほとんどの要素にフィルターが追加されます。

関連するmagic_quotesはわかりませんが、オフになっています。

編集2

私のクエリはプリペアドステートメントを使用していると思います->where('fqha.form_question_has_answer_form_id = ?', $result[$input->formpage]['form_id'])

つまり、これは、データに対するそれ以上の操作を無視して、投稿変数に含まれているものを保存できることを意味します。ページへの出力のためにサニタイズすることだけを心配していますか?

編集

私はドクトリン1.2を使用しており、これはpdoであると言えますが、これと上記の質問に関して、アドバイスをいただければ幸いです。

protected function _initDoctrine()
    {
        require_once 'Doctrine/Doctrine.php';
        require_once 'Doctrine/Overloadable.php';
        require_once 'Doctrine/Connection/Profiler.php';

        $this->getApplication()  
             ->getAutoloader()   
             ->pushAutoloader(array('Doctrine', 'autoload'), 'Doctrine');

        $manager = Doctrine_Manager::getInstance();
        $manager->setAttribute(  
            Doctrine::ATTR_MODEL_LOADING,   
            Doctrine::MODEL_LOADING_CONSERVATIVE
        );

        $cacheDriver = new Doctrine_Cache_Apc();

        $config = $this->getOption('doctrine'); 
        $conn = Doctrine_Manager::connection('mysql://user:pass@localhost/db_name', 'doctrine'); 
        $conn->setAttribute(Doctrine_Core::ATTR_QUERY_CACHE, $cacheDriver);
        $conn->setCharset('utf8');
        $conn->exec('SET NAMES utf8');

        $profiler = new Imind_Profiler_Doctrine_Firebug();
        $conn->setListener($profiler);

        return $conn;
    }
4

0 に答える 0