2011-06-19 7 views
1

Web転送のソースを検出することはできますか?ドメインの変更を検出しますか?

たとえば、 Domain Aは、Domain Bにリダイレクトされます。ドメインBにはPHPホスティングがありますか?

基本的に私は、次のような何かをしたいと思います:

if ($was_redirected_from_domain_a) { ... } 
+0

ドメインAはあなたのコントロール下にありますか?どのようなフォワーディングがヘッダベースで行われていますか? –

+0

@Pekka 'Domain A'はhttp://tonyphoto.co.ukで、' Domain B'はhttp://my-art-gallery.co.ukです。私は転送がどのように行われるかわからない、私は単にFastHostsコントロールパネルからWeb転送を選択した。両方のドメインは私のコントロール下にあります。 –

答えて

3

は、$_SERVER["HTTP_REFERER"]がソリューションです。

しかし、特定の場合、で行わリダイレクト:

http://fhc.quickmediasolutions.com/image/-1457172086.png

この方法は、オリジナルのリファラ情報が失われます。 2番目のリダイレクトを無効にし、my-art-gallery.co.ukのインデックスページでPHPを実行する必要があります。 phpinfo()出力を見た後

更新:

$_SERVER["HTTP_REFER"]は確かに完全に非存在です。

私は犯人がこの設定である疑いがある:

suhosin.server.strip = On 

ホスティング会社は、セキュリティの強化のためのPHPページから特定のデータを削除することができますSuhosin PHPのパッチを、実行されています。 HTTP_REFERERを有効にするように要求する必要があります。ホスティングプロバイダのコントロールパネルは、リダイレクトのその種を許可する場合 -

唯一の他の方法は、あなたが、その後$_GET["camefrom"]を通じてドメインAの引数を取り出すことができ

domainb.co.uk/index.php?camefrom=domainA 

のようなものにドメインAをリダイレクトすることになります。

+0

'index.php'の先頭に' echo $ _SERVER ['HTTP_REFERER']; die; 'を追加しようとしましたが、空白のページしか表示されませんでした。それは2回目のリダイレクトを避けました。 –

+0

@Lea hmm、strange。それはうまくいくはずです。 'phpinfo()'を試して、元のドメインが出力のどこにあっても見えますか? –

+0

phpinfoが表示されていますが、そこにはありません –

1

ページのURLをリファラとして知られているを見て必要なもの。 url referrerは、現在のユーザーがサイトに行ったURLです。ただし、ユーザーがタブを開いて単純にURLを入力した場合、URLリファラーは存在しないため、注意してください。

URLのリファラには、以下を使用して見つけることができるはずです

$myVar = $_SERVER['HTTP_REFERER']; 
+0

私はそれを試みましたが、それは空白になります。基本的に 'ドメインA 'が入力され、自動的にリダイレクトされるとき、'ドメインB'がこれを検出したいと思います。 –

1

ペッカが、それはユーザーが転送された方法によって異なり、言ったように。 $ _SERVER [ 'http_referrer']値をチェックしてみてください。@MoarCodePlzと@Christopherアームストロングが指摘するように

if ($_SERVER['HTTP_REFERER'] == 'mydomain.com/mypage'){ 
    echo 'Came from mydomain'; 
} 
0

$_SERVER["HTTP_REFERER"]は信頼できる解決法ではありません。それがうまくいかない場合もあります。

HTTP_REFERERには、リダイレクトされたページのURLではなく、ユーザーがクリックしたページのURLが含まれています。

など。 example.comページにはt.co/somelinkへのリンクがあり、yoursite.comにリダイレクトされます。 $_SERVER["HTTP_REFER"]にはhttp://example.comが含まれており、あなたの訪問者がTwitterの短いURLからあなたのサイトにリダイレクトされたことを知る方法はありません。

あなたのTwitterのリンクからユーザーが来たことを知る唯一の方法は、すでに提案されているように$_GETパラメータを含めることです。t.co/somelinkyoursite.com/?camefrom=twitterにリダイレクトさせてください。

関連する問題