За последние 24 часа нас посетили 50846 программистов и 1746 роботов. Сейчас ищут 865 программистов ...

вопрос по функции: strip_tags

Тема в разделе "Прочие вопросы по PHP", создана пользователем $oft, 3 фев 2010.

  1. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    Приветствую всех :)

    Тут возник вопрос по функции из САБЖ.

    PHP:
    1. echo strip_tags($text, '<p><a>');
    1. нужно ли указывать закрывающие теги? вот так:
    PHP:
    1. echo strip_tags($text, '<p></p><a></a>');
    2. если у меня используются CSS стили, то эта функция удалит теги с цсс указаниями (например такой <p TYPE=active></p>) или придется указывать конкретно вот так:
    PHP:
    1. echo strip_tags($text, '<p TYPE=active></p><a></a>');
    PS
    как на ваш взгляд моя функция для простой защиты пхп скриптов?
    PHP:
    1.  
    2. //_____ общая защита скрипта от нежелательных входных данных. проверка входных данных
    3. //_____ $data - входные данные :: $limit_symbol = ограничение по символам ::
    4. //_____ $accept_tags - разрешенные теги :: $n_to_br - замена \n на тег <br> (если = 1, то заменяет)
    5.  
    6. function protection_script($data, $limit_symbol, $n_to_br, $accept_tags) {
    7. $data = trim($data);
    8. if ($limit_symbol > 0) { $data = substr($data,0,$limit_symbol); }
    9. if ($n_to_br == 1) { $data = ereg_replace("\n", '<br>', $data); }
    10. if ($accept_tags != 0 OR $accept_tags != '') {$data = strip_tags($data, $accept_tags); }
    11. return $data;
    12. }
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    На оба вопроса в документации ответ дан красным цветом.
    Because strip_tags() does not actually validate the HTML, partial, or broken tags can result in the removal of more text/data than expected.
    This function does not modify any attributes on the tags that you allow using allowable_tags , including the style and onmouseover attributes that a mischievous user may abuse when posting text that will be shown to other users.
     
  3. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Кстати, может пригодится Tidy, если предварительно проверяете валидность.
     
  4. $oft

    $oft Активный пользователь

    С нами с:
    11 окт 2008
    Сообщения:
    113
    Симпатии:
    0
    Адрес:
    Орел
    К сожеланию не особ хорошо знаю английский..
    Опираясь на свой и гугль перевод я правильно понял?
    1. Пхп не всегда правильно определяет теги и может нарушиться труктура текста.
    Но все таки он определяет теги, поэтому </p> закрывающие теги не нужно указывать.

    2. ПХП не определяет модификации текста типа TYPE=active, по этому если пользователь недобросовестно использовал эти расширения для стилей пхп может проглядеть этот тег.

    Я правильно понял или есть какие то неточности?