如何检查是否以编程方式请求页面?

时间:2012-11-30 04:39:43

标签: php html request server-side

我的网站页面根据以下规则显示不同的内容:

如果没有给定的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页的方法?

2 个答案:

答案 0 :(得分: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 *****/

答案 1 :(得分:0)

我最终找到了一个解决方案,部分原因是“ChronoFish”的评论“你可以改变你的逻辑”......虽然不是直接的。

我提出的解决方案非常简单,而且我很生气我以前没想过。

好的,网站的工作原理如下:

用户访问网址1 - 在网址1上,如果用户没有给定的Cookie并且他们的引荐来源不是内部的或是空白的,则会显示网址2.如果到达网址1的用户有给定的Cookie或他们的referrer是内部的,它们显示为URL 1.这都是我原来的问题。

我遇到的问题是,PDF API也请求URL 1,而像这样的服务器端调用没有cookie或引用来...所以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

然后我的原始代码的其余部分在另外的声明中。