- Описание функции
- Примеры использования
- Генерация nonce для формы
- Проверка валидности nonce
- Создание ссылки с nonce
- Использование nonce в AJAX запросах
- Интеграция с плагинами и темами
- Вопросы и ответы
- Как проверить nonce значение после отправки формы?
- Как изменить имя поля nonce?
- Как отключить добавление referer поля в nonce?
- Как скрыть поле nonce в форме?
- Как добавить дополнительные атрибуты к полю nonce?
- Как использовать nonce в AJAX запросах?
- Как создать несколько полей nonce в одной форме?
- Как проверить nonce значение при обработке формы?
- Как обновить nonce значение при каждой загрузке страницы?
- Связанные элементы
Описание функции
Функция wp_nonce_field() используется для получения или отображения скрытого поля nonce в формах. Nonce (число использования) — это уникальная строка, которая генерируется для каждого запроса и используется для безопасности и проверки подлинности данных.
Использование
wp_nonce_field( int|string $action = -1, string $name = '_wpnonce', bool $referer = true, bool $display = true ): string Функция wp_nonce_field() принимает следующие параметры:
$action(int|string) (необязательно): Название действия. По умолчанию: -1$name(string) (необязательно): Название nonce. По умолчанию: ‘_wpnonce’$referer(bool) (необязательно): Устанавливать ли поле referer для проверки. По умолчанию: true$display(bool) (необязательно): Отображать или возвращать скрытое поле формы. По умолчанию: true
Функция возвращает HTML-разметку поля nonce.
/**
* Пример использования функции wp_nonce_field()
*/
$action = 'my_action'; // Название действия
$name = 'my_nonce'; // Название nonce
$referer = true; // Устанавливать поле referer
$display = true; // Отображать скрытое поле
$nonce_field = wp_nonce_field( $action, $name, $referer, $display );
echo $nonce_field;
В этом примере мы создаем поле nonce с заданным названием действия и названием nonce. Поле referer будет установлено для проверки. Скрытое поле будет отображаться на странице.
Примеры использования
Генерация nonce для формы
/**
* Генерация nonce для формы.
*
* @param int|string $action Optional Action name. Default: -1
* @param string $name Optional Nonce name. Default '_wpnonce'. Default: '_wpnonce'
* @param bool $referer Optional Whether to set the referer field for validation. Default: true
* @param bool $display Optional Whether to display or return hidden form field. Default: true
*
* @return string Nonce field HTML markup.
*/
wp_nonce_field( $action, $name, $referer, $display );
Проверка валидности nonce
/**
* Проверка валидности nonce.
*
* @param string $action Action name.
* @param string $nonce Nonce value.
*
* @return false|int False if the nonce is invalid, 1 if the nonce is valid and generated between 0-12 hours ago, 2 if the nonce is valid and generated between 12-24 hours ago.
*/
if ( wp_verify_nonce( $nonce, $action ) ) {
// Нонс валиден.
} else {
// Нонс недействителен.
}
Создание ссылки с nonce
/**
* Создание ссылки с nonce.
*
* @param string $url URL to add nonce action.
* @param int|string $action Action name.
* @param string $name Nonce name.
*
* @return string URL with nonce action added.
*/
$url = wp_nonce_url( $url, $action, $name );
Использование nonce в AJAX запросах
/**
* Использование nonce в AJAX запросах.
*/
var data = {
action: 'my_ajax_action',
nonce: '<?php echo wp_create_nonce( "my_ajax_action" ); ?>'
};
jQuery.post( ajaxurl, data, function( response ) {
// Обработка ответа.
});
Интеграция с плагинами и темами
/**
* Интеграция с плагинами и темами.
*
* @param string $action Action name.
*
* @return string Nonce field HTML markup.
*/
echo wp_nonce_field( 'my_custom_action', 'my_custom_nonce' );
Вопросы и ответы
Как проверить nonce значение после отправки формы?
Для проверки значения nonce после отправки формы в WordPress можно использовать функцию wp_verify_nonce(). Она принимает два параметра: значение nonce и имя действия. Функция возвращает true, если nonce действительный, и false в противном случае.
if ( isset( $_POST['_wpnonce'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'my_action' ) ) {
// Действия при успешной проверке nonce
} else {
// Действия при недействительном или отсутствующем nonce
}
Как изменить имя поля nonce?
Имя поля nonce по умолчанию в WordPress — _wpnonce. Чтобы изменить его, можно передать новое имя вторым параметром функции wp_nonce_field().
wp_nonce_field( 'my_action', 'my_nonce_field' );
Как отключить добавление referer поля в nonce?
По умолчанию, функция wp_nonce_field() добавляет поле referer в nonce. Чтобы отключить это поведение, можно передать третий параметр со значением false.
wp_nonce_field( 'my_action', '_wpnonce', false );
Как скрыть поле nonce в форме?
Для скрытия поля nonce в форме можно использовать параметр $display функции wp_nonce_field(). Если установить его значение в false, то функция вернет только HTML-разметку поля nonce без его отображения на странице.
$nonce_field = wp_nonce_field( -1, '_wpnonce', true, false );
Как добавить дополнительные атрибуты к полю nonce?
Для добавления дополнительных атрибутов к полю nonce можно использовать параметр $referer функции wp_nonce_field(). Если установить его значение в false, то функция не будет добавлять поле referer для валидации.
$nonce_field = wp_nonce_field( -1, '_wpnonce', false, true );
Как использовать nonce в AJAX запросах?
Для использования nonce в AJAX запросах необходимо передать его значение вместе с запросом и проверить его на сервере. Для этого можно использовать функцию wp_verify_nonce().
// В JavaScript
var data = {
action: 'my_ajax_action',
nonce: '<?php echo wp_create_nonce( "my_ajax_nonce" ); ?>'
};
// В PHP
if ( isset( $_POST['nonce'] ) && wp_verify_nonce( $_POST['nonce'], 'my_ajax_nonce' ) ) {
// Валидация пройдена
} else {
// Ошибка валидации
}
Как создать несколько полей nonce в одной форме?
Для создания нескольких полей nonce в одной форме можно использовать функцию wp_nonce_field() несколько раз, указывая разные значения для параметра $action. Например:
wp_nonce_field( 'my_action_1', 'my_nonce_1' );
wp_nonce_field( 'my_action_2', 'my_nonce_2' );
Как проверить nonce значение при обработке формы?
Для проверки значения nonce при обработке формы можно использовать функцию wp_verify_nonce(). Например:
if ( isset( $_POST['my_nonce'] ) && wp_verify_nonce( $_POST['my_nonce'], 'my_action' ) ) {
// Верификация пройдена, выполняем действия
} else {
// Верификация не пройдена, выводим ошибку
}
Как обновить nonce значение при каждой загрузке страницы?
Nonce значение обновляется автоматически при каждой загрузке страницы. Для вывода обновленного значения можно использовать функцию wp_nonce_field() с параметром $display равным false. Например:
$nonce_field = wp_nonce_field( -1, 'my_nonce', true, false );
echo $nonce_field;
Функция
wp_nonce_field()в WordPress используется для создания и проверки nonce полей в формах. Она позволяет обеспечить безопасность при отправке данных и защитить от CSRF атак. Создание нескольких полей nonce в одной форме, проверка значения nonce при обработке формы и обновление nonce значения при каждой загрузке страницы — это основные возможности, которые предоставляет функцияwp_nonce_field().
Связанные элементы
- Функция
wp_create_nonce(): генерирует и возвращает уникальный nonce (число, используемое для проверки подлинности данных) для указанного действия. - Функция
wp_verify_nonce(): проверяет подлинность переданного nonce для указанного действия. - Функция
wp_nonce_url(): добавляет nonce к URL-адресу. - Функция
wp_referer_field(): выводит скрытое поле с URL-адресом, с которого была отправлена форма, для использования при проверке подлинности. - Функция
check_admin_referer(): проверяет подлинность nonce и URL-адреса, с которого была отправлена форма, в административной части сайта. - Функция
check_ajax_referer(): проверяет подлинность nonce и URL-адреса, с которого был отправлен AJAX-запрос.