check_admin_referer

Проверяет, был ли текущий запрос отправлен со страницы админки. Также, проверяется проверочный код nonce. В случае ошибки обрывает работу скрипта.

Если проверка не будет пройдена, функция прерывает работу PHP скрипта (die) и выводит сообщение: “Are you sure you want to do this?” со ссылкой на предыдущую страницу. Читайте описание функции: wp_nonce_ays().

Хуки из функции:
check_admin_referer
Возвращает

Логическое true, если проверка пройдена. Или или прерывает сценарий PHP.

Использование

<?php check_admin_referer( $action, $query_arg ); ?>
$action(строка)
Идентификатор nonce проверки (первый аргумент функции wp_nonce_field).
По умолчанию: -1
$query_arg(строка)
Название параметра запроса, содержащего значение nonce, т.е. где искать проверочный код.
По умолчанию: ‘_wpnonce’

Примеры

#1. Базовый пример использования:

<?php check_admin_referer( 'bcn_admin_options' ); ?>

Выполнение сценария будет прервано, если запрос был не со страницы админки.

#2. Добавление и проверка проверочного кода.

Пример того, как использовать эту функцию при написании плагина. Добавляем проверочный код функцией wp_nonce_field()

<form method="post">
   <!-- данные формы ... -->
   <?php wp_nonce_field( 'name_of_my_action','name_of_nonce_field' ); ?>
</form>

Теперь, на странице где принимаются переданные данные, проверяем проверочный код и обрабатываем запрос, если проверка пройдена:

<?php
// Если проверка не пройдена, check_admin_referer() автоматически выведет сообщение и прервет работу PHP.
if( check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' ) ) {
   // обрабатываем полученные данные
}

Код из


wp-includes/pluggable.php

WP 4.7.2

<?php
function check_admin_referer( $action = -1, $query_arg = '_wpnonce' ) {
	if ( -1 == $action )
		_doing_it_wrong( __FUNCTION__, __( 'You should specify a nonce action to be verified by using the first parameter.' ), '3.2.0' );

	$adminurl = strtolower(admin_url());
	$referer = strtolower(wp_get_referer());
	$result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce($_REQUEST[$query_arg], $action) : false;

	/**
	 * Fires once the admin request has been validated or not.
	 *
	 * @since 1.5.1
	 *
	 * @param string    $action The nonce action.
	 * @param false|int $result 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.
	 */
	do_action( 'check_admin_referer', $action, $result );

	if ( ! $result && ! ( -1 == $action && strpos( $referer, $adminurl ) === 0 ) ) {
		wp_nonce_ays( $action );
		die();
	}

	return $result;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *