- Описание функции
- Примеры использования
- Проверка валидности nonce при отправке формы
- Проверка валидности nonce при обновлении данных пользователя
- Проверка валидности nonce при удалении записи
- Проверка валидности nonce при загрузке файла
- Проверка валидности nonce при добавлении нового поста
- Вопросы и ответы
- Как проверить, что nonce является действительным?
- Как получить значение nonce из формы?
- Какой контекст должен быть указан при создании nonce?
- Как часто обновляется nonce?
- Какие действия могут привести к недействительности nonce?
- Какой формат должен иметь nonce?
- Как использовать wp_verify_nonce() в темах WordPress?
- Как обрабатывать ошибку недействительного nonce?
- Связанные элементы
Описание функции
Функция wp_verify_nonce() используется для проверки правильности использования безопасного идентификатора (nonce) с ограничением по времени. Она проверяет, был ли передан правильный идентификатор (nonce) и был ли он создан в течение определенного временного интервала.
Использование
wp_verify_nonce( string $nonce, string|int $action = -1 ): int|false Функция wp_verify_nonce() принимает два параметра: $nonce (обязательный) и $action (необязательный). Она возвращает целое число или логическое значение false.
$nonce(string) — Обязательный. Значение идентификатора (nonce), которое было использовано для проверки, обычно передается через поле формы.$action(string|int) — Необязательный. Должен указывать контекст того, что происходит, и должен быть таким же, как при создании идентификатора (nonce). По умолчанию: -1.
Функция возвращает целое число или логическое значение false. Возвращаемые значения:
- 1 — если идентификатор (nonce) действителен и был создан в течение последних 0-12 часов.
- 2 — если идентификатор (nonce) действителен и был создан в течение последних 12-24 часов.
- false — если идентификатор (nonce) недействителен.
<?php
// Проверка идентификатора (nonce) при обработке формы
if ( isset( $_POST['submit'] ) ) {
$nonce = $_POST['my_nonce'];
$action = 'my_action';
// Проверка идентификатора (nonce)
if ( wp_verify_nonce( $nonce, $action ) ) {
// Идентификатор (nonce) действителен, выполняем действия
// ...
} else {
// Идентификатор (nonce) недействителен, обрабатываем ошибку
// ...
}
}
?> В приведенном выше примере кода функция wp_verify_nonce() используется для проверки правильности идентификатора (nonce), переданного через поле формы. Если идентификатор (nonce) действителен, то выполняются определенные действия, в противном случае обрабатывается ошибка.
Примеры использования
Проверка валидности nonce при отправке формы
// Создание nonce
$nonce = wp_create_nonce( 'my-nonce' );
// Вывод формы с полем для nonce
echo '<form method="post">';
echo '<input type="hidden" name="my-nonce" value="' . esc_attr( $nonce ) . '">';
echo '<input type="submit" value="Submit">';
echo '</form>';
// Проверка валидности nonce при обработке формы
if ( isset( $_POST['my-nonce'] ) && wp_verify_nonce( $_POST['my-nonce'], 'my-nonce' ) ) {
// Действия при валидном nonce
echo 'Nonce is valid.';
} else {
// Действия при невалидном nonce
echo 'Nonce is invalid.';
}
Проверка валидности nonce при обновлении данных пользователя
// Получение текущего пользователя
$user_id = get_current_user_id();
// Создание nonce для обновления данных пользователя
$nonce = wp_create_nonce( 'update-user_' . $user_id );
// Проверка валидности nonce при обновлении данных пользователя
if ( isset( $_POST['update-user-nonce'] ) && wp_verify_nonce( $_POST['update-user-nonce'], 'update-user_' . $user_id ) ) {
// Действия при валидном nonce
echo 'Nonce is valid.';
} else {
// Действия при невалидном nonce
echo 'Nonce is invalid.';
}
Проверка валидности nonce при удалении записи
// Получение ID записи для удаления
$post_id = 123;
// Создание nonce для удаления записи
$nonce = wp_create_nonce( 'delete-post_' . $post_id );
// Проверка валидности nonce при удалении записи
if ( isset( $_POST['delete-post-nonce'] ) && wp_verify_nonce( $_POST['delete-post-nonce'], 'delete-post_' . $post_id ) ) {
// Действия при валидном nonce
echo 'Nonce is valid.';
} else {
// Действия при невалидном nonce
echo 'Nonce is invalid.';
}
Проверка валидности nonce при загрузке файла
// Создание nonce для загрузки файла
$nonce = wp_create_nonce( 'upload-file' );
// Проверка валидности nonce при загрузке файла
if ( isset( $_POST['upload-file-nonce'] ) && wp_verify_nonce( $_POST['upload-file-nonce'], 'upload-file' ) ) {
// Действия при валидном nonce
echo 'Nonce is valid.';
} else {
// Действия при невалидном nonce
echo 'Nonce is invalid.';
}
Проверка валидности nonce при добавлении нового поста
// Создание nonce для добавления нового поста
$nonce = wp_create_nonce( 'add-post' );
// Проверка валидности nonce при добавлении нового поста
if ( isset( $_POST['add-post-nonce'] ) && wp_verify_nonce( $_POST['add-post-nonce'], 'add-post' ) ) {
// Действия при валидном nonce
echo 'Nonce is valid.';
} else {
// Действия при невалидном nonce
echo 'Nonce is invalid.';
}
Вопросы и ответы
Как проверить, что nonce является действительным?
Для проверки действительности nonce в WordPress используется функция wp_verify_nonce(). Она принимает два параметра: $nonce — значение nonce, которое было использовано для проверки, и $action — контекст, в котором был создан nonce.
Функция возвращает целое число или логическое значение false. Если nonce действительный и был создан в пределах последних 0-12 часов, функция вернет 1. Если nonce действительный и был создан в пределах последних 12-24 часов, функция вернет 2. Если nonce недействительный, функция вернет false.
$nonce = $_POST['nonce'];
$action = 'my_action';
if ( wp_verify_nonce( $nonce, $action ) ) {
// Nonce is valid
} else {
// Nonce is invalid
}
Как получить значение nonce из формы?
Значение nonce можно получить из формы с помощью функции wp_nonce_field(). Она генерирует скрытое поле формы с значением nonce и выводит его на страницу.
wp_nonce_field( 'my_action', 'my_nonce' );
Какой контекст должен быть указан при создании nonce?
При создании nonce необходимо указать контекст, который будет использоваться при проверке его действительности. Контекст должен быть одинаковым при создании и проверке nonce. Это может быть любая строка, которая описывает действие или событие, для которого используется nonce.
$action = 'my_action';
$nonce = wp_create_nonce( $action );
Как часто обновляется nonce?
Nonce обновляется каждый раз, когда он создается. Это означает, что каждый раз, когда вы создаете новый nonce, предыдущий становится недействительным.
Пример использования функции wp_create_nonce() для создания нового nonce:
$action = 'my_action';
$nonce = wp_create_nonce( $action );
Какие действия могут привести к недействительности nonce?
Недействительность nonce может быть вызвана следующими действиями:
- Использование неправильного значения nonce при проверке.
- Использование неправильного значения действия (action) при проверке.
- Срок действия nonce истек (более 24 часов).
Какой формат должен иметь nonce?
Nonce должен быть представлен в виде строки.
Как использовать wp_verify_nonce() в темах WordPress?
Функция wp_verify_nonce() используется для проверки правильности nonce в темах WordPress. Она принимает два параметра: $nonce и $action.
Пример использования:
if ( isset( $_POST['submit'] ) ) {
$nonce = $_POST['my_nonce'];
$action = 'my_action';
if ( wp_verify_nonce( $nonce, $action ) ) {
// Действия, если nonce действителен
} else {
// Действия, если nonce недействителен
}
}
Как обрабатывать ошибку недействительного nonce?
Если nonce недействителен, можно выполнить следующие действия:
- Отобразить сообщение об ошибке.
- Перенаправить пользователя на другую страницу.
- Запретить доступ к определенным функциям или данным.
Функция wp_verify_nonce() используется для проверки правильности nonce в темах WordPress. Она возвращает 1, если nonce действителен и был создан в течение последних 12 часов, 2, если nonce действителен и был создан в течение последних 24 часов, и false, если nonce недействителен. При использовании wp_verify_nonce() необходимо учитывать возможные действия, которые могут привести к недействительности nonce, а также обрабатывать ошибку недействительного nonce соответствующим образом.
Связанные элементы
- Функция
wp_create_nonce(): генерирует уникальный идентификатор (nonce) для использования в проверке безопасности. - Функция
wp_nonce_field(): генерирует поле формы с уникальным идентификатором (nonce) для использования в проверке безопасности. - Функция
wp_nonce_url(): добавляет уникальный идентификатор (nonce) к URL-адресу для использования в проверке безопасности. - Функция
wp_referer_field(): генерирует скрытое поле формы с URL-адресом предыдущей страницы для использования в проверке безопасности. - Функция
wp_nonce_ays(): выводит сообщение об ошибке, если проверка безопасности с идентификатором (nonce) не прошла. - Хук
check_admin_referer: вызывается при проверке безопасности с идентификатором (nonce) в административной части сайта. - Хук
check_ajax_referer: вызывается при проверке безопасности с идентификатором (nonce) в AJAX-запросах. - Хук
nonce_life: позволяет изменить время жизни идентификатора (nonce).