Функция wp_referer_field()
используется для вывода или получения скрытого поля формы с информацией о реферере (адресе текущей страницы), который отправляется при отправке формы. Это поле помогает отслеживать, с какой страницы был выполнен запрос, и защищает форму от подделки запросов.
wp_referer_field( bool $display = true ): string
Параметры:
$display
(bool, необязательный): Определяет, будет ли поле выведено на экран или возвращено в виде строки.- По умолчанию:
true
— выводит HTML на экран. false
— возвращает HTML разметку поля в виде строки.
- По умолчанию:
Возвращаемое значение:
- Возвращает строку, содержащую HTML разметку скрытого поля
<input>
для реферера.
Особенности:
- Поле имеет атрибут
name="_wp_http_referer"
и содержит текущий URI запроса (значение переменной$_SERVER['REQUEST_URI']
). - Используется для защиты форм от атак CSRF (подделки межсайтовых запросов) и отслеживания рефереров.
Пример 1: Редирект обратно на страницу
В данном примере, если действие не выполнено, пользователь будет перенаправлен обратно на предыдущую страницу, с которой был сделан запрос.
// Есть операция
if ( $doaction ) {
// выполняем действия
}
// Нет операции, вернем пользователя обратно
elseif ( ! empty( $_REQUEST['_wp_http_referer'] ) ) {
wp_safe_redirect( $_REQUEST['_wp_http_referer'] );
exit;
}
Пример 2: Добавление скрытого поля в форму и его проверка
Добавим скрытое поле реферера в форму, а затем проверим его после отправки данных.
Предположим, форма находится на странице с URL /test-page
:
<form action="/submit" method="post">
<!-- поля формы -->
<?php wp_referer_field(); ?>
</form>
Функция wp_referer_field()
выведет:
<input type="hidden" name="_wp_http_referer" value="/test-page" />
Теперь, после отправки данных на страницу /submit
, мы можем проверить, что запрос пришел именно с нужной страницы:
if ( $_POST['_wp_http_referer'] === '/test-page' ) {
// Проверка пройдена, обработаем данные
} else {
// Проверка не пройдена, выводим сообщение об ошибке
}
Заключение:
Функция wp_referer_field()
помогает отслеживать и сохранять информацию о реферере при отправке форм, что полезно как для безопасности, так и для удобства навигации пользователей. Она также играет важную роль в защите от атак CSRF, благодаря возможности проверки реферера после отправки формы.