Я использовал это, чтобы сохранить данные в базу данных:Sanitize :: HTML с акцентами CakePHP2.0
$this->request->data['Post']['body'] = utf8_decode($this->request->data['Post']['body']);
Как это, я мог бы сохранить в моей БД некоторые «специальные» символы, такие как те, с акцентом : áéíóú без проблем.
Затем я попытался защитить мое заявление от HTML и SQL инъекций, и я использовал санитарную так:
$this->request->data['Post']['body'] = Sanitize::html($this->request->data['Post']['body']);
Так что теперь мой текст хранится в базе данных, как это:
á = á
é = é
í = í ...etc
И я не хочу этого. Кроме того, мое поле в БД имеет максимальное количество символов, и это не помогает.
Я также попытался использовать параметр param для sanitize с encode = true, encode = false или encode = 'utf8', но ничего не меняется.
Что мне делать? Спасибо.
UPDATE 1
Я также пытался использовать htmlentities функцию на мой контроллер, но он вставляет это в моей базе данных вместо того, чтобы:
Ã
Хорошо, тогда я должен просто использовать h ($ myText) в своих представлениях, чтобы защитить его от инъекций HTML правильно? – Alvaro
Хорошо, я могу обработать его по моему мнению, поскольку мое тело содержит созданный URL-адрес в формате HTML (aaa), и он уничтожает его. Я также пытался использовать htmlentities на моем контроллере, но это сохраняет меня в базе данных: & Atilde; вместо á – Alvaro
Вы можете просто «Sanitize :: stripTags()», если вы не хотите хранить HTML. 'h()' вам не поможет. Он просто преобразует символы в объекты, вроде «Sanitize :: html()». – jeremyharris