я должен дезинфицировать параметры WordPress, когда я публикую в options.php? - PullRequest
0 голосов
/ 03 мая 2018

Я пишу плагин для уведомления о файлах cookie, и мне интересно, нужно ли мне санировать входные данные или экранировать выходы опций, когда я публикую / сохраняю опции через options.php и использую опции через get_option ().

Я просто хочу создать безопасный плагин.

вот пример того, как я бы обработал параметры:

function formz_register_settings()
{
    add_option('formzname', 'guckguck');
    register_setting('formz_settings', 'formzname', 'formz_callback');

}

add_action( 'admin_init', 'formz_register_settings' );


function formz_register_options_page() {
    add_options_page('Page Title', 'FORMZ', 'manage_options', 'formz', 'create_admin_option_page');
}
add_action('admin_menu', 'formz_register_options_page');

function create_admin_option_page(){


    ?>

    <h1>Formulare bearbeiten</h1>
<hr>


    <form method="post" action="options.php">
        <?php settings_fields('formz_settings'); ?>
    <table class="form-table">
        <tr valign="top">
            <th scope="row"><label for="formzname">Facebook Pixel ID</label></th>
            <td><input class="regular-text code" type="text" id="formzname" name="formzname"
                       value="<?php echo esc_html(get_option('formzname')); ?>"/></td>
        </tr>




    </table>
        <?php submit_button(); ?>

    </form>
<br>
    <?php echo esc_html(get_option('formzname')); ?>



<?php

}




?>

тогда я использую get_option ('bla'); в интерфейсе для отображения настроек.

Является ли options.php правильным способом или лучше admin-post.php? а какая разница?

По сути, я просто хочу знать, все ли в порядке с моим кодом для публикации.

спасибо!

1 Ответ

0 голосов
/ 03 мая 2018

WordPress гарантирует безопасное сохранение в базе данных, избегая ввода при выполнении запроса, однако всегда рекомендуется убедиться, что вы выполняете его дезинфекцию самостоятельно, используя что-то вроде sanitize_text_field.

Однако при вызове функции register_setting вы можете определить метод очистки, который будет использоваться при сохранении, чтобы вам не пришлось беспокоиться о том, чтобы сделать это самостоятельно.

Итак, ваш код здесь:

register_setting(
    'formz_settings',
    'formzname',
    'formz_callback'
);

Может быть изменено на:

register_setting(
    'formz_settings',
    'formzname',
    array(
        'type' => 'string',
        'sanitize_callback' => 'sanitize_text_field'
    )
);
...