Как я правильно санирую данные, полученные от текстовой области при выводе его назад в текстовую область?

Я изменил myFunction, чтобы взять идентификатор в качестве аргумента, чтобы вы могли указать, какое всплывающее окно переключать. Также исправлена ​​небольшая синтаксическая ошибка var popupTwo = .....; popup.classList, так как всплывающее окно было undefined и выдает ошибку.

    <!-- Popup 1 -->
    <div class="popup" onclick="myFunction('myPopup')">Click me to toggle the popup!
    <span class="popuptext" id="myPopup">A Simple Popup!</span>
    </div>

    <!-- Popup 2 -->
    <div class="popup" onclick="myFunction('myPopupTwo')">Click me to toggle the popup two!
    <span class="popuptext" id="myPopupTwo">A Simple Second Popup!</span>
    </div>

    <script>
    function myFunction(id) {
      var popup = document.getElementById(id);
      popup.classList.toggle("show");
    }
    </script> 
7
задан EndangeredMassa 27 February 2009 в 01:48
поделиться

2 ответа

Вы не должны использовать htmlentities при сохранении его. Необходимо использовать htmlentities при отображении его. Эмпирическое правило не состоит в том, чтобы кодировать/санировать данные, пока Вы не должны. Если Вы делаете htmlentities на нем, когда Вы сохраняете затем, необходимо сделать html_entity_decode на тексте, когда пользователь хочет отредактировать вход. Таким образом, Вы санируете, для какого Вам нужно и ничто больше. При сохранении его необходимо санировать для Внедрения SQL, таким образом, Вы mysql_real_escape_string это. При отображении необходимо санировать для XSS, таким образом, Вы htmlentities это.

Кроме того, я не уверен, видели ли Вы комментарий Darryl Hein, но Вы действительно не хотите включенный magic_quotes. Они - плохое, плохо, вещь и были удержаны от использования с PHP 5.3 и закончатся в целом в PHP 6.

14
ответ дан 6 December 2019 в 12:55
поделиться

В дополнение к ответу Паоло о том, когда использовать htmlentities(), если Вы не используете старую версию PHP, корректный способ санировать для вставки в mysql DB состоит в том, чтобы использовать Подготовленные Операторы, которые являются частью mysqli расширения. Это заменяет любую потребность использовать mysql_real_escape_string().

Кроме этого, я думаю, что Вам покрыли вещи.

2
ответ дан 6 December 2019 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: