アフィリリンクURLをランダムに変える | 健康情報を考えるブログ

アフィリリンクURLをランダムに変える

今朝、ネットのお友達からスカイプで相談がありました。

「アフィリエイトリンクURLを、ランダムに変えるには?」
「phpの埋込み関数でやりたいのだけど・・・」


ウエブページにネットユーザーさんが訪問したときに、HTMLに表示されるリンクを、見るたびに違うものにしたいのだそうです。


商品の目的は同じでも、違うメーカーがそれぞれ独自の商品を販売しているケースなどですね。


どのメーカーの商品が売れやすいかを計測したい、
あるいは、なんらかの理由で分散したい、ということでしょう。



★処理としては、次の流れでいいと思います。

[1]リンクリストをテキストファイルに記述してサーバーに置いておく
[2]ウエブリクエストによってデータファイルを読み込む
[3]複数リンクデータをシャッフルする
[4]1個のリンクデータを取り出してHTMLに出力する


シャッフルするのに2通りのやり方を考えました。


【1】HTMLに埋め込んだphp関数でシャッフルする
【2】phpが呼び出す外部CGIでシャッフルする


通常は【1】でいいのですが、データファイルをウエブから読まれてしまうという危険性があります。データファイルを隠したい場合は、【2】の外部CGIが読み込むファイルの拡張子を例えば「.cgi」にしておくとよいと思います。ウエブリクエストを送るとサーバーはスクリプトではないテキストファイルを実行しようとするため、エラー終了します。



★実際の各ファイルの作り方


【1】HTMLに埋め込んだphp関数でシャッフルする


[1]HTMLの記述
phpが有効になるように、HTMLファイルを拡張子.phpで保存するか、.htaccessで.htmlを有効化しておく必要があります。


<?php
$array = file("http://データ置き場のURL/list.txt");
srand(time());
shuffle($array);
$shift = array_shift($array);
echo $shift;
?>


という記述をHTMLに書きます。


[2]リンクデータファイルの記述

http://データ置き場のURL/list.txt に、

<a href="url1">リンクテキスト</a>
<a href="url2">リンクテキスト</a>
<a href="url3">リンクテキスト</a>
<a href="url4">リンクテキスト</a>


のようにURLを変えたデータ行を改行区切りで記述します。




【2】phpが呼び出す外部CGIでシャッフルする


[1]HTMLの記述
phpが有効になるように、HTMLファイルを拡張子.phpで保存するか、.htaccessで.htmlを有効化しておく必要があります。


<?php
$line = file_get_contents("http://データ置き場のURL/shuffle.cgi");
echo $line;
?>


[2]shuffle.cgiの流れ


taglist.cgiファイルを読み込む
配列@arrayに格納する
配列@arrayをランダムシャッフルする
コンテントヘッダーを出力する
配列@arrayの最初の要素を出力する
終了


[3]taglist.cgiの記述(パーミッション644)


<a href="url1">リンクテキスト</a>
<a href="url2">リンクテキスト</a>
<a href="url3">リンクテキスト</a>
<a href="url4">リンクテキスト</a>


のようにURLを変えたデータ行を改行区切りで記述します。

ただのテキストファイルです。

shuffle.cgiと同じ場所に置きます。



shuffle.cgiのコードが欲しいという場合はメッセージをください。