检查PHP中的动态引荐来源网址以防止访问页面

时间:2019-07-10 18:28:37

标签: php wordpress referer

我试图防止直接访问网页,我只希望访问者在被特定URL引用后才能查看该页面。

例如,访问者尝试查看https://example.com/restricted网页,如果访问者并非来自https://example.com/redirect/ ***,则应将访问者重定向到首页。

为什么在引荐来源网址中使用星号?这是一个动态(?)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 个答案:

答案 0 :(得分:1)

您可以使用strpos函数来检查引荐来源网址是否以您的域或重定向关键字开头。 用法示例

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