#6.11 php web приложения Удаление тегов HTML

При обработке введенного текста необходимо обратить внимание на следующую деталь, в особенности, если строку потом планируется отображать. Пользователь может использовать при наборе текста теги HTML (в том числе и выражения на JavaScript), что может повлиять на корректность работы приложения при использовании этого текста для формирования страницы. Для предотвращения этой ситуации можно использовать функцию strip_tags, которая удаляет из заданной строки все теги, что и продемонстрировано в примере 1.

Пример 1. Удаление тегов из введенного текста

<HTML>
    <HEAD>
        <TITLE>
            Удаление тегов
        </TITLE>
    </HEAD>
    <BODY>
        <CENTER>
            <H1>Удаление тегов</H1>
            <?php 
                $errors = array();
                if (isset($_REQUEST["seen_already"])) {
                    validate_data();
                    if (count($errors) > 0) {
                        display_errors();
                        display_form();
                    } else {
                        process_data();
                    }
                } else {
                    display_form();
                }

                function validate_data()
                {
                    global $errors;
                    if($_REQUEST["Name"] == "")
                    {
                        $errors[] = "<FONT COLOR='RED'>Имя обязательно для ввода</FONT>";
                    }
                }   

                function display_errors()
                {
                    global $errors;
                    foreach ($errors as $err)
                    {
                        echo $err, "<BR>";
                    }
                }

                function process_data()
                {
                    echo "Ваше имя: ";
                    $ok_text = strip_tags($_REQUEST["Name"]);
                    echo $ok_text;
                }

                function display_form()
                {
                    echo "<FORM METHOD='POST' ACTION='phpstrip.php'>";
                    echo "Введите ваше имя:";
                    echo "<BR>";
                    echo "<INPUT NAME='Name' TYPE='TEXT'>";
                    echo "<BRxBR>";
                    echo "<INPUT TYPE=SUBMIT VALUE='OK'>";
                    echo "<INPUT TYPE=HIDDEN NAME='seen_already'
                    VALUE= 'data'>";
                    echo "</FORM>";
                }
            ?>
        </CENTER>
    </BODY>
</HTML>

Теперь, если пользователь введет текст, содержащий HTML-теги (как на рис. 1), то при формировании страницы теги будут удалены, и потенциальная угроза безопасности приложения будет устранена (см. рис. 2).



Рис. 1. Попытка ввода HTML-тегов



Рис. 2. Текст отображается без тегов

Key Words for FKN + antitotal forum (CS VSU):