wp_verify_nonce() WP 2.0.3

Перевіряє вказаний одноразовий код (nonce код).

Одноразовий код створюється однією з функцій:

Про одноразові коди читайте в окремій статті .

Це init .

Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.

Основа для:
check_ajax_referer()

Хуки з функції

Повертає

int|false.

  • false– якщо перевірку не пройдено.
  • 1– якщо код перевірки був створений у перші 12 годин (у проміжку 0-12 годин).
  • 2– якщо код перевірки був створений в останні 12 годин (у проміжку 12-24 години).

Використання

if( wp_verify_nonce( $nonce, $action ) ){
	// перевірка пройдено
}
$nonce
(рядок) (обов’язковий)
Код nonce, який потрібно перевірити. Зазвичай він передається у запиті:
$_POST[‘_wpnonce’] .
$action
(рядок)

Ключ, який був вказаний під час створення nonce коду.

Це необов’язкове значення, яке передається функції: wp_create_nonce(‘значення’) . Якщо значення не було вказано під час створення ключа, то й тут його можна не вказувати – перевірку буде пройдено.

За замовчуванням: -1

Приклади

0

#1 Приклад перевірки даних за $_GET запиту:

<?php $nonce= wp_create_nonce('my-nonce'); ?>

<a href='myplugin.php?_wpnonce=<?php echo $nonce ?>&data=якісь дані'> ...

<?php
// перевіряємо дані
if( wp_verify_nonce( $_GET['_wpnonce'], 'my-nonce') ){
	// обробляємо дані форми
}
else {
	die('Перевірка не пройдена!');
}
?>

список змін

З версії 2.0.3Введено.

Код wp_verify_nonce() WP 6.0.2

function wp_verify_nonce( $nonce, $action = -1 ) {
	$nonce = (string) $nonce;
	$user = wp_get_current_user();
	$uid = (int) $user->ID;
	if ( ! $uid ) {
		/**
		 * Filters whether the user який generated the nonce is logged out.
		 *
		 * @ Since 3.5.0
		 *
		 * @param int $uid ID nonce-owning user.
		 * @param string $action The nonce action.
		 */
		$uid = apply_filters( 'nonce_user_logged_out', $uid, $action );
	}

	if ( empty ( $ nonce ) ) {
		return false;
	}

	$token = wp_get_session_token();
	$i = wp_nonce_tick();

	// Не genera generated 0-12 hours ago.
	$expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 );
	if ( hash_equals( $expected, $nonce ) ) {
		return 1;
	}

	// Не genera generated 12-24 hours ago.
	$expected = substr( wp_hash( ( $i - 1 ) . '|' . $action . '|' . $uid . '|' . $token, 'nonce' ), -12, 10 );
	if ( hash_equals( $expected, $nonce ) ) {
		return 2;
	}

	/**
	 * Fires when nonce verification fails.
	 *
	 * @ Since 4.4.0
	 *
	 * @param string $nonce The invalid nonce.
	 * @param string|int $action The nonce action.
	 * @param WP_User $user The current user object.
	 * @param string $token User's session token.
	 */
	do_action( 'wp_verify_nonce_failed', $nonce, $action, $user, $token);

	// Invalid nonce.
	return false;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *