check_admin_referer()
Перевіряє, чи надіслано поточний запит зі сторінки адмінки і чи правильний вказаний код nonce. У разі помилки обриває роботу скрипта (die).
Якщо перевірка не буде пройдена, функція перериває роботу PHP скрипта (die) і виводить повідомлення: “Are you sure you want to do this?” із посиланням на попередню сторінку. Читайте опис функції: wp_nonce_ays() .
Примітка щодо цієї функції: Якщо nonce правильний, то немає необхідності перевіряти реферер. Nonce коди використовуються багато в чому тому, що не можна довіряти параметру referrer. Так можна сказати, що nonce повністю замінює перевірку реферера. Функція перевіряє реферер тільки тоді, коли не вказано параметр $action (не вказано nonce для перевірки). В даний час перевірка реферера дуже рідко зустрічається.
Зі сказаного вище, у функції вийшла невдала назва, тому що вона майже ніколи не перевіряє реферер. Було б краще назвати її якось check_nonce() , але зробити це не дозволяє зворотна сумісність зі старими версіями тем і плагінів.
Є ще аналогічна функція для перевірки AJAX запиту: check_ajax_referer()
Це init .
Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.
Хуки з функції
Повертає
int|false
.
false
– Неправильний nonce токен.1
– nonce правильний і створений 0-12 годин тому2
– nonce правильний і створений 12-24 години тому.
Використання
<?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>
Тепер, на сторінці де приймаються передані дані, перевіряємо код перевірки та обробляємо запит, якщо перевірка пройдена:
function my_handler_function(){ // Переконаємося, що запит не прострочений // При помилці, виведе повідомлення та перерве роботу PHP. check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' ); // працюємо }
Іноді для зрозумілості коду можна записати з if:
if( check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' ) ) { // обробляємо отримані дані }
список змін
З версії 1.2.0 | Введено. |
З версії 2.5.0 | $query_arg parameter був added. |