Запретить отображение кодов символов HTML в textarea - PullRequest
1 голос
/ 08 июня 2010

Можно ли отображать коды символов HTML, хранящиеся в текстовом поле в SQL, в текстовую область, не отображая их в качестве соответствующих символов? я не был & показывать как & amp; (как это хранится в таблице). Или мне нужно хранить HTML, чтобы мне не пришлось об этом беспокоиться?

(сайт использует PHP)

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

То, о чем вы говорите, называется HTML-кодированием; каждый современный язык имеет в своей библиотеке средство для этого, такое как функция htmlspecialchars в PHP. Для получения дополнительной информации о PHP см. этот вопрос .

Вы также должны убедиться, что вы корректируете входные данные, даже против многократных циклов декодирования HTML; в противном случае вы будете подвержены атакам CSS (межсайтовый скриптинг).

0 голосов
/ 08 июня 2010

В PHP вы можете использовать функцию htmlspecialchars (http://php.net/manual/en/function.htmlspecialchars.php):

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new;
?>

, и она отобразит:

&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;

, если вы хотите декодировать их обратно, выпросто используйте функцию htmlspecialchars_decode

<?php
$str = '<p>this -&gt; &quot;</p>';

echo htmlspecialchars_decode($str);

// note that here the quotes aren't converted
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>
...