如何使用引用检查将重定向放在 php 模板前面?

How to put a redirect in front of a php template with a referer check?

我的 (wordpress) 子主题文件夹中有一个模板,用于我创建的自定义 post 类型。它看起来像这样:

<head>
    …
    <style>
        …
    </style>
    <script>
        …
    </script>
</head>

<header>
    …
</header>

<?php
    …
?>

<div id="content">
    <?php xx_page_header($post->ID); ?>
    …
</div>

<?php get_footer(); ?>

这正是它的结构。我这么说是因为我是 php 初学者,如果有人愿意帮助我,我最需要 exact 信息 where 正是为了放置代码片段(我猜最终看起来会很简单而且很小)。

我有 4 个页面基于此模板页面。他们都运作良好。

下面是我要补充的内容:

页面依次包含输入表单等,并通过传递表单进行点击,有点像过滤过程。

我怎样才能在模板前面放一个referer检查?这样页面就可以继续正常工作,但是如果有人复制其中一个 link 并将其粘贴到另一个浏览器 window,他将始终被重定向到 first 的页面,而不是看到实际 link.

的页面

我已经尽我所能进行了一些研究,并找到了一些我想使用的作品。至于:

1) referer部分:

<?php
    $ref=getenv("HTTP_REFERER");
    $url='url_redirect';
    if($ref!='referer_url'){
       header('Location: '.$url);
    }
?>

2) 一个正则表达式,使其适用于所有使用该模板的页面:

ref.match(/^http?:\/\/([^\/]+\.)?mywebpage\.com(\/|$)/i)

假设 (filtering) 起始页是:www.mywebpage.com/startpage/

我如何组合这些片段以及将它们放在哪里(我猜是在模板的开头)?

我想避免使用 cookie。 (使用引用者)

从技术上讲,您可以执行类似于以下代码的操作。起始页之后的每个页面都必须具有唯一的 url 和在每个页面上传递的令牌。您需要将此代码放在模板的最顶部。

类似的东西:

<?php    
    $url='url_redirect';
    if((is_page('template2') || is_page('template3') || is_page('template4')) && $_POST['token'] == '') {
       header('Location: '.$url);
    }
?>