Каков правильный способ дезинфекции данных формы перед отправкой в базу данных? У меня есть следующий ввод текста:
<form method="post" action="options.php"> <?php wp_nonce_field('update-options'); ?> <input style="width:100%" type="text" name="data[title]" id="title" value="<?php $title = get_option('data_test'); echo $title['title']; ?>" /></p> <input type="hidden" name="action" value="update"/> <input type="hidden" name="page_options" value="lu_ban_data"/> <input style="float:left;margin-top: 10px; margin-bottom: 10px; vertical-align: middle; clear: both;" class="button-primary" type="submit" value="<?php _e('save changes') ?>" /> </form>
Я пробовал делать echo sanitize_text_field($title['title']);
, но он только дезинфицирует данные при запросе его из db, данные внутри db по-прежнему содержат нежелательные символы. Вот почему я хочу санировать, прежде чем отправлять его.
Я не уверен, что это полезно или нет. Как сказал s_ha_dum, вы должны опубликовать, как обрабатываете представленные данные и отправляете их в db.
Но для начала вы можете посмотреть на выход данных в форме:
<input style="width:100%" type="text" name="data[title]" id="title" value="<?php $title = get_option('data_test'); echo esc_attr($title['title']); ?>" /></p>
Используйте esc_attr () и esc_html () для данных, которые вы добавляете на страницу, отправленную пользователем, или вы не уверены в ее происхождении.
esc_attr()
для содержимого, выводимого в атрибут тега html, а esc_html()
– для содержимого, выводимого непосредственно на страницу или между тегами. Существуют также esc_attr_e()
, esc_attr__()
, esc_html_e
и esc_html__()
если вам нужен перевод.
Наконец, в пределах экранирующей серии есть esc_sql () для отправленных пользователем данных, которые вы собираетесь отправить в свою базу данных.
EDIT :
Как отметил @Milo в комментариях, здесь нет особого использования для esc_sql (), поскольку эти функции escape применяются уже к update_option () через функцию sanitize_option () и подготовлены при размещении в базе данных. Поэтому вы можете пропустить это. Если вы пишете собственные вызовы MySQL для хранения данных, вы должны посмотреть на $ wpdb-> prepare, чтобы избежать их.
Для добавления метаданных и параметров в базу данных с помощью встроенных функций вы уже охвачены.