2012-11-30 93 views
1

我有我的网站的一个页面,显示基于以下规则不同的内容:如何检查是否以编程方式请求页面?

如果给定的cookie不存在,则

-if referrer is internal then 
--show page 1 
--else 
--show page 2 
else 
-show page 1 

的问题是,对特定页面有时是由被访问服务器本身(使用PHP与PDF API一起使用)。具体来说,请求URL的代码看起来像这样(和有看起来像这样):

$pdf = $client->convertURI('URL HERE') 

当访问该页面,第2页总是显示,因为引用不存在的,也不是一个cookie 。

但是,我需要第1页总是显示...有一个标志或方式,当通过服务器请求特定的URL总是显示第1页?

+0

添加逻辑来处理这种情况 - 没有Cookie,没有参考。没有任何我知道的“show page 1”标志。 – ultranaut

+0

该逻辑已经存在......没有cookie,没有引用者显示第2页。但是当该页面被请求通过PDF API进行处理时,我需要显示第1页......因此这个问题。 – Learning

回答

0

如果我理解你,你只是想你正在测试某些条件下的用户强制到一个页面(第1页)。如果这是正确的,那么这应该足够了:

/** 
    access logic left to your discretion 

***/ 

if ($access != 'granted') 
{ 
    header('Location: http://www.example.com/page1'); 
    exit(); // for clarity 
} 

/******* logic continued for "page 2" or whatever *****/ 
+0

只是要清楚,变量“$ access”或“授予”的值没有任何魔术。您将修改它以满足您的需求。 – ChronoFish

+0

这就是问题所在。如果没有cookie,并且引用者不在内部或不存在,我需要显示用户页面2。恰好在请求该页面处理PDF API时存在相同的确切条件,这就是为什么我想知道是否有任何额外的“条件”以编程方式请求URL。 – Learning

+0

所以你问如何解决所需的cookie?你的服务器无法辨别谁在另一边。这只是一个HTTP请求(通过浏览器或其他方式)。你能扭转你的逻辑吗?添加一个触发PDF API的标志(条件) - 当不存在时转到第2页。 – ChronoFish

0

我最终找出一个解决方案,部分原因是由于“ChronoFish的”的评论:“你可以扭转你的逻辑” ......虽然不能直接。

我想出了解决办法,很简单,我疯了我之前没想到它。

好了,现场的工作原理是这样的:

用户访问的URL 1 - 对URL 1,如果用户没有给定的cookie存在,并且它们的引用是不是内部或为空,它们显示的URL 2.如果到达URL 1的用户有一个给定的Cookie或其引用者是内部的,他们显示为URL 1.这是我原来的问题。

我遇到的问题是,PDF API也请求URL 1,而像这样的服务器端调用没有cookie或referrer ...所以PDF API将URL 2中的内容返回给它,而不是来自URL 1的内容是需要的。

的PDF API是如何调用,使用这样的:

$pdf = $client->convertURI('URL 1 HERE') 

好吧,我所做的就是一个变量添加到URL那么,URL 1在此为,该URL现在读起来就像这样:

http://somesite.com/URL-1/?server=yes 

然后,在URL 1,我添加了逻辑的额外位:

$server = $_GET["server"]; 
if ($server == 'yes') 
then show URL 1 

然后我原来合作的休息在额外的其他声明中。

相关问题