У меня есть следующий пример того, что пользователь может ввести в поле для имени сообщения:
<h1><span>They're awesome people</span></h1>
Теперь, поскольку это заголовок сообщения, я хочу удалить все, чтоHTML полностью, прежде чем сохранить его в базе данных.Это связано с тем, что: а) по соображениям безопасности и б) если я экспортирую это как JSON, я не хочу очищать HTML при выводе данных для сторонних пользователей.
В своей модели я попробовал следующее:
public function beforeSave() {
if (isset($this->data[$this->alias]['title']))
{
//$this->data[$this->alias]['title'] = Sanitize::clean($this->data[$this->alias]['title'], array('encode'=>true,'remove_html'=>true));
$this->data[$this->alias]['title'] = html_entity_decode(Sanitize::html($this->data[$this->alias]['title'], array('remove'=>true)));
}
return true;
}
Как вы можете видеть, я пытался очистить HTML и классом Clean, и HTML из класса Sanitize, но оба вызывают проблему в том, что они избегают кавычки из they're
, делая ее похожей на '
.Я попытался использовать html_entity_decode
вокруг sanitize, чтобы очистить это, но это все еще происходит.Любые идеи о том, как это сделать?
Если я сделаю это, хотя:
echo html_entity_decode('They're awesome people');
она работает нормально, поэтому функция в порядке, это проблема с использованием его в сочетании с классом sanitizeв CakePHP.
Спасибо