Функция 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, благодаря возможности проверки реферера после отправки формы.