アフィリリンク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のコードが欲しいという場合はメッセージをください。