2016-01-08 3 views
2

Я написал пользовательский компонент для Joomla. Этот канал RSS может быть прочитан из разных источников и должен храниться в базе данных SQL.Joomla, правильное экранирование в их собственном компоненте

Но как правильно использовать функцию эвакуации? Вот мой код:

// Create a new query object. 
$query = $db->getQuery(true); 

// Insert columns. 
$columns = array('id', 
       'id_feedsource', 
       'title', 
       'link', 
       'pubDate', 
       'timePubDate', 
       'guid', 
       'description', 
       'creator', 
       'content' , 
       'read', 
       'smart', 
       'demografie', 
       'urbanisierung', 
       'arbeitswelten', 
       'konnektivitaet', 
       'nano', 
       'femaleshift', 
       'energie', 
       'bildung', 
       'individualisierung', 
       'public', 
       'cache'); 

// Insert values. 
$values = array('NULL', 
       $db->quote($db->escape($value['source'])), 
       $db->quote($db->escape($value['title'])), 
       $db->quote($db->escape($value['link'])), 
       $db->quote($db->escape($value['pubDate'])), 
       $db->quote($value['timePubDate']), 
       $db->quote($db->escape($value['guid'])), 
       $db->quote($db->escape($value['description'])), 
       $db->quote($db->escape($value['creator'])), 
       $db->quote($db->escape($value['content'])), 
       0,0,0,0,0,0,0,0,0,0,0,0,0); 

// Prepare the insert query. 
$query 
    ->insert($db->quoteName('#__heka_rss_feeds')) 
    ->columns($db->quoteName($columns)) 
    ->values(implode(',', $values)); 

// Set the query object and execute it. 
$db->setQuery($query); 
//echo $query->dump().'<br>'; 
$db->execute(); 

Теперь добавьте отдельные вклады «\». Например: Космический телескоп Ферми НАСА \ 's обостряет его высокоэнергетического видение

При выдаче это не выглядит хорошо. Из-за использования SQL Injection следует использовать, но может быть и не совсем корректно. Что я делаю неправильно?

ответ

0

Я считаю, что цитата $ db-> также ускользает от значений. Таким образом, у вас будет двойной выход, как вы это сделали. Попробуйте

$values = array('NULL', 
      $db->quote($value['source']), 
      $db->quote($value['title']), 
      $db->quote($value['link']), 
      ... 

... который должен работать лучше. См. Документы here

Смежные вопросы