check_ajax_referer()

Функция нужна для валидации одноразовых чисел (nonces) в AJAX-запросах.

Рекомендую вам свой видеокурс по AJAX в WordPress.

Читайте, что такое одноразовые числа (nonces) и для чего они нужны в этом уроке.

check_ajax_referer( $action = -1, $query_arg = false, $die = true )

Параметры функции check_ajax_referer()

$action
(строка|целое) Ключ, описывающий действие, который использовался при создании проверяемого защитного нонс-ключа! (если использовался).
$query_arg
(строка) Начиная с версии WordPress 2.5 вы можете указать название ключа, в котором хотите проверять значение nonce, по умолчанию проверяются ключи _ajax_nonce и _wpnonce.
$die
(логическое) По умолчанию, если проверка nonce не удалась, то функция вызывает wp_die() и прекращает выполнение AJAX-запроса, но, указав этот параметр в значение true, функция будет возвращать 1, 2 или false, аналогично функции wp_verify_nonce().

Пример использования check_ajax_referer()

В целом у меня даже есть видеоурок с примером, можете посмотреть его.

// создаём одноразовое число
$ajax_nonce = wp_create_nonce( 'true_security' );
 
echo '<script>
jQuery( function( $ ){
	var data = {
		action: \'true_action\',
		security: \'' . $ajax_nonce . '\', // передаём значение nonce в запрос
		true_str: \'Привет!\'
	};
	$.post( ajaxurl, data, function( response ) {
		console.log( \'Ответ с сервера: \' + response );
	});
});
</script>';

И непосредственно в обработчике AJAX-запроса:

add_action( 'wp_ajax_true_action', 'true_ajax_cb' );
 
function true_ajax_cb() {
	check_ajax_referer( 'true_security', 'security' ); // проверка nonce-ключа
	echo $_POST[ 'true_str' ];
	die;
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

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

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.