Проверка URL динамического реферера в PHP для предотвращения доступа к странице - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь запретить прямой доступ к веб-странице, я хочу, чтобы посетители могли просматривать страницу только в том случае, если на них ссылался определенный URL.

Например, посетитель пытается просмотреть веб-страницу https://example.com/restricted,, если посетитель не приходит с https://example.com/redirect/***,, посетитель должен быть перенаправлен на домашнюю страницу.

Почему я использую звездочку в URL моего реферера? Это динамический (?) URL. Под этим подразумевается, что URL-адрес реферера может быть https://example.com/redirect/514,, но также может быть https://example.com/redirect/58613.

Так что, в принципе, мне нужно иметь подстановочный знак для добавления в конец URL-адреса вместо номера в конце. https://example.com/redirect/WILDCARDHERE? (это то, что я думаю)

Примечание: я буду использовать этот код в своем файле функций Wordpress, я попытался переполнить стек Wordpress, но не получил никакого ответа, поэтому я пытаюсь здесь попытаться.

Я пробовал несколько вещей, но я довольно невежественен.

add_action('template_redirect', function() {
if ( ! is_page(464)) {
    return;
}

if (wp_get_referer() == 'https://example.com/redirect/') {
    return;
}

wp_redirect( get_home_url() );
exit;
})

Надеюсь, кто-то может предоставить мне правильное значение!

1 Ответ

1 голос
/ 10 июля 2019

Вы можете использовать функцию strpos , чтобы проверить, начинается ли referer с вашего домена или с помощью ключевого слова перенаправления.Пример использования

$referer = wp_get_referer();
if ($referrer !== false && strpos($referer, "domain") === 0) {
      return;
}
...