2017-04-08 82 views
-1

我在我的(wordpress)子主题文件夹中创建了一个自定义帖子类型的模板。它看起来像这样:如何使用referer检查将php重定向到php模板前?

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

<header> 
    … 
</header> 

<?php 
    … 
?> 

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

<?php get_footer(); ?> 

这正是它的结构。我把它是因为我是PHP初学者,如果有人愿意帮助我,那么我将最需要确切的信息其中准确地将代码片段(它最终会看起来简单和小,我猜测)。

我有4页基于此模板页面。他们都工作得很好。

这是我要补充,虽然:

的成功页面相互包含输入形式等,并通过传递形式,种类的过滤过程中通过点击。

如何在模板前放置引用检查?为了让页面继续工作,但是如果有人复制其中一个链接并将其粘贴到另一个浏览器窗口中,他将始终重定向到的第一个页面,而不是看到实际链接的页面。

我已经做了一些研究尽我所能,发现了一些我想使用的作品。至于是:

1)引荐部分:

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

2)一个正则表达式,使其成为正在使用该模板的所有网页的工作:

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

比方说,(过滤)起始页面是:www.mywebpage.com/startpage/

我该如何将这些片段合并到哪里(我想在第一次开始时e模板)?

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

+0

在你的起始页,你传递任何POST变量? – cosmoonot

+0

坦率地说,我不知道。知道这很重要吗? – Garavani

+0

是的,因为您需要一个变量来检查是否设置了起始页的变量。 – cosmoonot

回答

1

从技术上讲,你可以做类似于下面的代码。开始页面之后的每个页面都必须具有唯一的URL和在每个页面上传递的标记。您需要将此代码放在模板的顶部。

类似的东西:

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

我仍在为如何在这个概念中创建并传递令牌而苦苦挣扎。我读了关于wordpress随机。他们在这里有帮助吗?我为4个不同的页面使用了一个模板。 – Garavani