2012-01-29 6 views
22

ユーザーが私のサイト、短縮URL、または別のサイトを介してそのページに来たかどうかを検出できる404ページが必要です。私はPHPを使用して作成しています。私はゆっくりとPHPを理解していますが、これは簡単な質問かもしれませんが、正直で私のシステムにはカフェインがないので、私はできるだけ早く私のポートフォリオの緩やかな終わりを縛りたいと思っています。

私は、$_SERVER['HTTP_REFERER']; PHP変数が私に全体のURLを与えてくれることを発見しました。いくつかの参照元がhttp://といくつかのhttps://を使用している可能性があるということを心に留めて、別の変数や関数を使ってルートドメインのみを与える方法がありますか?必ずしも働くとは限りません)?こうすることで、2つ(またはそれ以上)の事前定義されたアドレスに基づいてURLを照合し、そのドメインに関連するコンテンツを生成することができます。

答えて

37
parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) 

http://php.net/manual/en/function.parse-url.phpを参照してください。

リファラは、偽装するのが非常に簡単なので、ほとんど信頼できません。これが何をすべき

+0

素晴らしいです!これは完璧に機能しますが、URLリダイレクトされた301のURLで同じことをすることはできません。どんなことでも、私は方法を見つけるでしょう。 –

+0

ところで、どのように簡単にURLを偽装するのですか?誰かが私のドメインを簡単に詐称できますか?どうやって? –

+0

私は* referer *が偽装するのは簡単だと言っています。それはリクエストのHTTPヘッダーに送信される任意のオプションの任意データです。クライアントはそこで何かを送ることができます。あなたが好きなものにrefererを変更するブラウザのプラグインがあります。 – deceze

3

あなたが探しているものを簡単に達成するために正規表現を使用することもできますが、あなたの最善の策かもしれません。

0

$_SERVER['SERVER_NAME'] 
+0

あなたが 'potato.domain.com'のようなサブドメインを使用していて、結果として' domain.com'を得たいと思うような非常に良い選択肢ではありません。これは失敗します。 OPはstate _root domain_を実行しました – Cassandra

関連する問題