野良メモ -noramemo-noramemo

京都府京都市山科区で活動するwebデザイナーのブログです。

[:N]リファラーを使ってリンク元のURLを判断~ページにアクセスで広告を表示させてみた時の実装メモ

この記事は2014年6月26日に書かれたもので、内容が古い可能性がありますのでご注意ください。

web系メモ

PHPを使って、「他のウェブサイトから自分のウェブサイトにアクセスされた時に広告を表示」させてみた時の覚え書きです!

こんにちは!@noramasaです。
はじめてアクセスしたウェブサイトで、画面が少し暗くなって広告がドドーン!と出てきて「広告じゃなくてウェブサイトが見たいんだよ!」って邪魔に感じた経験ってありますよね。
今回はそんな感じのコードをメモっておきますよ!

やりたいこと

・トップページにアクセスしたら特定のブロックを表示
・同サイト内の別ページからトップページにアクセスした際は表示しない

実装・設定方法

リンク元のドメインを取得

まずはリファラーを使ってリンク元のURLを取得します(1行目)。
そして取得したURLを「parse_url」を使って特定できる要素を配列化します(2行目)。
これでリンク元のURLを要素ごとに取得できたことになります。

<?php 
	$link = $_SERVER['HTTP_REFERER'];
	$link = parse_url($link);
?>

リンク元のドメインが自分のサイトのドメイン以外なら要素を表示

URLを配列化したものの「host」を使って、ドメインが自分のウェブサイトのドメインと相違するかの条件文を作ります。
今回は自分のウェブサイトのドメインでない場合は画像を表示してみます。

<?php 
	$link = $_SERVER['HTTP_REFERER'];
	$link = parse_url($link);
	if($link['host'] != "www.sample.com"){
?>
<img src="koukoku.png" alt="テスト">
<?php 
	}
?>

以上です!トップページに上記のコードを埋め込めば動くかと思います!
ただ、これだと他サイトからアクセスする度に表示されてしまいます。
より一層ユーザにストレスを与えないようにするにはCookie等を使った方がよさそうですね。

おまけ

colorboxでかっこよくカスタマイズ

ただ画像を表示するだけでは味気ない、ウェブサイトに広告を出すスペースがない…などなどもありますので、colorboxを使って少し演出したコードもメモっておきます。
>>>デモ版はこちらからご確認ください。

・・・ほにょほにょ・・・
<link rel="stylesheet" href="colorbox.css" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="jquery.colorbox.js"></script>
<script>
$(function() {
	$('a#onload').colorbox();
	$('a#onload').click();
}
</script>
・・・ほにょほにょ・・・
<?php 
	$link = $_SERVER['HTTP_REFERER'];
	$link = parse_url($link);
	if($link['host'] != "www.sample.com"){
?>
<a href="koukoku.png" id="onload"></a>
<?php 
	}
?>
・・・ほにょほにょ・・・

まとめ

「過去にアクセスした人には表示しない」などの仕様がなければ、大まかこんな感じでいいのかなと。というわけでリファラーを使ってみたというメモでした:)

以上、@noramasaでした!