1

次のルールに基づいてさまざまなコンテンツを表示する Web サイトのページがあります。

特定の 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')

それがページにアクセスすると、リファラーも Cookie も存在しないため、ページ 2 が常に表示されます。

しかし、常に表示するにはページ 1 が必要です...その特定の URL がサーバー経由で要求されたときに常にページ 1 を表示するフラグまたは方法はありますか?

4

2 に答える 2

0

「論理を逆にすることができますか」という「ChronoFish」のコメントのせいもあって、私は解決策を考え出すことになりました...直接ではありませんが。

私が思いついた解決策は非常に単純で、以前は考えもしなかったので気が狂っています。

了解しました。サイトは次のように機能します。

ユーザーがURL1にアクセス-URL1で、ユーザーに特定のCookieが存在せず、リファラーが内部にないか空白の場合、URL2が表示されます。URL1に到達したユーザーに特定のCookieが存在するか、リファラーが内部にある場合、URL1が表示されます。これはすべて私の元の質問です。

私が抱えていた問題は、PDFAPIもURL1を要求し、そのようなサーバー側の呼び出しにはCookieやリファラーがないことでした...したがって、PDF APIは、URLからのコンテンツではなく、URL2からのコンテンツを返していました。必要だったのは1です。

PDF APIがどのように呼び出されたかは、これを使用していました。

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

さて、私がしたのはURLに変数を追加することだけだったので、ここのURL 1は、次のようになります。

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 に答える
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 に答える