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 页?

4

2 回答 2

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 *****/
于 2012-11-30T04:51:33.807 回答
0

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

我想出的解决方案非常简单,我很生气我以前没有想到它。

好吧,网站是这样工作的:

用户访问 URL 1 - 在 URL 1 上,如果用户没有给定的 cookie 并且他们的引荐来源网址不是内部的或为空的,则显示 URL 2。如果到达 URL 1 的用户有给定的 cookie 存在或其引荐来源网址是内部,它们显示为 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

然后我的原始代码的其余部分包含在一个附加的 else 语句中。

于 2012-11-30T07:08:43.397 回答