【コピペで使える】1px×1px画像でインプレッション数(imp)を計測するPHPコードサンプル

はじめに

アフィリエイトで商材のリンクを貼り付けるとき、商材画像とは別のimgタグがセットになっているのを見たことがないでしょうか?

特に画像も出てこないし削除しちゃえ!なんて削除してしまった方もいるかもしれませんね。

でも、このimgタグを削除してはいけません。そう、このタグは実はインプレッション数(表示回数)の計測のためにあります。

ですので、このimgタグがなければクリック数のデータは取れても、インプレッション数のデータが取れないということになります。
 

imgタグでインプレッション数を計測する方法

アフィリエイトなどでインプレッション数を取得する方法としてimgタグが利用されます。

imgタグではタグ内に設置された画像表示時に対象サーバーへのアクセスが発生するため、そのファイルにカウンタープログラムを仕込んでデータベースに加算することで計測を可能にしているものと考えられます。

画像自体は設置ページのデザインの邪魔にならないように1px×1pxの透過画像を表示しておけばOKです。

このしくみさえ取り入れることができれば成果を計測できますので、独自のアフィリエイトタグを発行して小規模なアフィリエイトASPなんかを運営することも可能かもしれません。

また、アフィリエイト用途以外でも、”ページの特定の場所が見られた回数”という、通常では得ることのできないデータを取得することが可能となります。
 

プログラム概要

では、実際にできるだけ単純で汎用性が高い形式でインプレッション数取得プログラムを実装してみたいと思います。

プログラムの動作としては、HTML内の計測したい場所に以下のimgタグを設置することで、データベース内の該当レコードの数字をカウントアップできればOKとします。

<img src=”https://ドメイン名/imp.php?id=1″>

 
ID別にカウントできる仕様にすればIDを変えて複数の場所に設置することで、それぞれの表示回数を見ることができるようになります。
 

実装サンプル

DB

impテーブル

・id(INT)
・count(INT)

必要最低限のカラムとなる、id、countのふたつだけを用意します。実際に使用する際にさらに詳しい情報が必要な場合はカスタマイズしてください。

PHPファイル

imp.php


<?php
header("Content-type: image/gif");
define("DB_HOST", "【データベースサーバー名】");
define("DB_USER", "【ユーザー名】");
define("DB_PASS", "【パスワード】");
define("DB_NAME", "【データベース名】");
$db = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
$db->query('SET NAMES utf8');
$sql = "UPDATE imp SET count=count+1 WHERE id=:id;";
$stt = $db->prepare($sql);
$stt->bindParam(':id', $_GET['id']);
$ret = $stt->execute();
echo base64_decode('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
?>

ファイル読み込み後にデータベースの該当レコードのカウントアップ処理を行い、1px×1pxのGIF画像を出力します。

HTML


<img src="https://ドメイン名/imp.php?id=1">

HTML内のインプレッションを計測したい場所に上記のimgタグを設置すれば完了です。別々にカウントをとりたい場合は、場所によってIDを変えればOKです。
 

まとめ

もし独自にインプレッション数の計測をしたい場合は参考にして頂ければと思います。

もしこの通りに実装してうまく動かない等あれば、問合せフォームからでも、ページのコメントからでもよいのでご連絡を頂ければ回答をさせて頂きます。