[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Фильтрация некоторых html тегов
intranet
Вобщем ситуация такая:

хочу сделать возможность создания собственных html страниц, но необходимо запретить тег <script></script> (он может выводиться как текст но исполняться не должен). Как такое сделать в php?



Спустя 4 минуты, 29 секунд (15.03.2011 - 18:16) sharki написал(а):
Может филтровать только нужные теги..типа BB кода или наооборот всё пропускать а <script> заменять на другие символы, или удалять все, что внутри этих эл-тов с помощью регулярок

Спустя 1 минута, 22 секунды (15.03.2011 - 18:18) neadekvat написал(а):
intranet, быть может, лучше сделать спсок разрешенных тэгов?

Спустя 57 секунд (15.03.2011 - 18:18) DedMorozzz написал(а):
Ну запретите "<script></script>", а такой пройдёт:
<script ></script >
Что с ним будете делать?

Спустя 1 минута, 39 секунд (15.03.2011 - 18:20) intranet написал(а):
Придумал вот такое небольшое решение:

$html_body = ereg_replace("<script>*", "_", $html_body);
$html_body = ereg_replace("</script>*", "_", $html_body);


Это в файле отправки, где html_body содержимое html отправляемой страницы.

Что скажете?

Спустя 42 секунды (15.03.2011 - 18:21) intranet написал(а):
Но ведь пустой script ничего не сделает плохого.

Спустя 3 секунды (15.03.2011 - 18:21) sharki написал(а):
intranet
уже подчи отменили ereg давно пора переходить на preg

Спустя 54 секунды (15.03.2011 - 18:22) neadekvat написал(а):
Во-первых, ereg_* пора забыть.
Во-вторых, Я напишу <script > и уже все

Спустя 2 минуты, 22 секунды (15.03.2011 - 18:24) intranet написал(а):
if (preg_match("/<script>/i", "$html_body")) {
echo "Удалите скрипт и кода.";
} else {
echo "Сохранено.";
}

Спустя 17 секунд (15.03.2011 - 18:24) sharki написал(а):
neadekvat
Можно регулярку грамотную написать и все

Спустя 55 секунд (15.03.2011 - 18:25) DedMorozzz написал(а):
intranet
Перечитай ещё раз мой пост. http://phpforum.ru/index.php?showtopic=0&v...dpost&p=1000761

Спустя 2 минуты, 49 секунд (15.03.2011 - 18:28) neadekvat написал(а):
Цитата (sharki @ 15.03.2011 - 15:24)
Можно регулярку грамотную написать и все

Можно. Но в данном случаи я сторонник "Можно только то, что разрешено".
Да и тут нужно строго следить за кодом - можно "случайно" забыть закрыть какой-нибудь тэг и вся страница развалится.

Спустя 12 минут, 57 секунд (15.03.2011 - 18:41) DedMorozzz написал(а):
neadekvat
можно...ок, покажи

Спустя 1 минута, 14 секунд (15.03.2011 - 18:42) DedMorozzz написал(а):
подскажу сразу, задача - вырезать теги скрипт, в которых сработает код.
Терь подсказка: я могу писать html код вместо скобок, это тоже надо учесть. С удовольствием гляну на этого крокодила

Спустя 2 минуты, 55 секунд (15.03.2011 - 18:45) neadekvat написал(а):
Цитата (DedMorozzz @ 15.03.2011 - 15:41)
можно...ок, покажи

Вы уже сами сказали, что получится крокодил. А я сходу обязательно что-нибудь пропущу.
И какой смысл мне кому-то что-то доказывать?
К тому же, я не раз сказал, что за совершенно другое решение?

Спустя 5 минут, 5 секунд (15.03.2011 - 18:50) DedMorozzz написал(а):
Крокодил однозначно получится, тут без вариантов, примерно в уме прикинул кол-во возможностей и вполне вероятно что столько не будет даже поддерживаться регуляркой (однажди уже сталкивался с проблемой, что мою регулярку в несколько строк, с грубо говоря древом ПХП не обрабатывал, просто останавливался на каком-то этапе, не вис, а просто пропускал всё что больше некого диапазона)
Так что я вообще сомневаюсь что таковое выйдет. Только через preg_replace_callback, но это уже снова таки не регуляркой обработка будет, а полным набором всех ф-й.

Спустя 25 минут, 15 секунд (15.03.2011 - 19:16) prodigy написал(а):
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>


не? тогда извиняюсь :huh:

Спустя 3 дня, 19 часов, 53 минуты, 45 секунд (19.03.2011 - 15:09) mrpsyx написал(а):
а если написать htmlspecialchars(); то хтмл теги не работают, например <script></script> отображается как текст, можно ли обойти такую проверку?

Спустя 39 минут, 23 секунды (19.03.2011 - 15:49) twin написал(а):
Это не проверка. А значит и обходить неполучится.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.