この質問にいくらか答えられたら申し訳ありませんが、私が見るところどこでも答えは変わっているようです。
私は、データベースとの間でデータを処理する方法を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;
}