Правильная очистка радио-кнопок и селектов

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Мы уже рассматривали на блоге такие функции, как sanitize_text_field() и говорили о необходимости очистки данных перед их сохранением в базу данных.

И если для обычного текстового поля это может выглядеть примерно так:

update_option( 'option_name', sanitize_text_field( $_POST[ 'option_value' ] ) );

То для выпадающих списков <select> и для радио-кнопок я бы не спешил применять подобный подход.

Дело в том, что когда мы задаём определённые значения для <select>, мы подразумеваем, что только они и будут использоваться, а не какие-либо другие. Поэтому, очищая это поле как обычное текстовое поле, мы даём пользователям возможность проинспектировать этот элемент в браузере и ручками поменять его значение на какое им захочется. И в некоторых ситуациях, могу предположить, это может привести и к нежелательным результатам как бы.

Другое дело, если мы его очистим так:

// массив допустимых значений
$possible_values = array( 'val1', 'val2' );
$option_value = in_array( $_POST[ 'option_value' ], $possible_values ) ? $_POST[ 'option_value' ] : '';
 
update_option( 'option_name', $option_value );

Как видите, тут даже необязательно запускать sanitize_text_field().

Ещё есть вариант очистки мультиселектов:

// массив допустимых значений
$possible_values = array( 'val1', 'val2' );
$option_value = array_filter( $_POST[ 'option_value' ], function( $el ) { return in_array( $el, $possible_values ); });
 
update_option( 'option_name', $option_value );
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии