Валидация и очистка данных

Урок 12

Зарегистрируйтесь или войдите и получите бесплатный доступ к первым 2-м урокам курса.

Урок 12

Валидация и очистка данных при написании плагинов

В этом видеоуроке я поговорю об очистке данных в WordPress на примере нашего плагина. Также я приведу пример небезопасного кода и сразу же взломаю его.

Чтобы скачать плагин, который получился в процессе этого урока, нужно купить курс.

Когда мы говорим об очистке данных, то можно разделить её на очистку ввода данных и очистку вывода. Давайте чуть детальнее остановимся на каждой из них.

Очистка ввода данных

Проще понять очистку ввода можно, если представить, что пользователь должен ввести своё имя в обычное текстовое поле <input type="text">. Достаточно подумать о ситуации, если пользователь решит выделить своё имя жирным цветом и написать <strong>Миша</strong>. Тогда в базе данных в ячейке, в которой у нас хранятся имена пользователей, будет встречаться одно (или несколько) имён, содержащие HTML-теги, а может быть переносы строк и т.д.

Именно поэтому, перед тем, как сохранять пользовательский ввод в базу данных, мы должны очистить поле соответствующим образом. Ну в зависимости от того, какое поле.

update_user_meta( $post_id, 'first_name', sanitize_text_field( $_POST[ 'first_name' ] ) );

Рассмотрим несколько функций, предназначенных для этого:

ФункцияНазначение
sanitize_text_field()Очистка обычных текстовых полей <input type="text">
sanitize_textarea_field()Очистка полей <textarea>.
sanitize_email()Очистка email-адресов от недоступных символов, или ввода в <input type="email">
absint()Целые неотрицательные числа
intval()Любые целые числа
abs()Неотрицательные числа

Функций очистки намного больше, но выше – те, с которыми приходится встречаться чаще всего.

Очистка вывода данных

Главное правило здесь – не доверяй никому и никогда. То есть, даже если вы очистили весь пользовательский ввод, мы не можем доверять базе данных.

Предположим мы хотим вывести имя того же пользователя, но опять-таки предполагаем, что в базе данных оно может быть записано с HTML-тегами <strong>Миша</strong>, поэтому перед выводом мы должны очистить строку.

echo 'Ваше имя: ' . esc_html( get_user_meta( $user_id, 'first_name', true ) );

Рассмотрим несколько функций, предназначенных для этого:

ФункцияНазначение
esc_html()Экранирует HTML-теги
esc_attr()Экранирует символы, недоступные для использования в качестве HTML-атрибутов
esc_url()Используйте эту функцию для вывода чего-либо в атрибуты src="" или href=""
esc_textarea()Подготавливает строку для использования внутри тега <textarea>

Функций очистки намного больше, но выше – те, с которыми приходится встречаться чаще всего.

Купить курс
  • 11 видеоуроков
  • Можно скачать готовый код после каждого урока
  • Уроки актуальны под последние версии WooCommerce
  • Можно начать проходить курс сразу же после оплаты
  • Доступ навсегда
  • Единоразовый платёж
7000 р4200 р
Скидка 40% до 1 октября