私はphpの初心者で、自分のタスクを解決しようとしています。タスクは、国、ユーザー エージェントに応じてユーザーを複数のアフィリエイト リンクに正しくリダイレクトすることです。場合によっては、特定の国のユーザーにいくつかのリンクをランダムに表示する必要があります。
そこで、次のコードから始めました (Maxmind geoip を使用):
<?php
include("geoip.inc");
$gi=geoip_open("geoip.dat",GEOIP_STANDARD);
$cc=geoip_country_code_by_addr($gi, getenv('REMOTE_ADDR'));
if($cc=="US") header("Location: http://domain1.com");
if($cc=="AU") header("Location: http://domain2.com");
if($cc=="CA") header("Location: http://domain3.com");
geoip_close($gi);
if(stristr($_SERVER['HTTP_USER_AGENT'],"iPad"))
{
header("Location: http://domain4.com");
}
if(stristr($_SERVER['HTTP_USER_AGENT'],"iPhone"))
{
header("Location: http://domain5.com");
}
$num = Rand (1,3);
switch ($num) {
case 1: header('Location: http://domain6.com');
break;
case 2: header('Location: http://domain7.com');
break;
case 3: header('Location: http://domain8.com');
break;
}
?>
コードの最初の部分では、特定の国のユーザーのみをリダイレクトしたかったのですが、コードの次の部分では、他のすべての国のユーザーを他の残りのリンクにリダイレクトする必要があり、そこから Ipad と Iphone のユーザーは domain4 と domain5 に移動する必要があります。問題は、ランダム リダイレクトを使用する 3 番目の部分のみがコードで機能し、GeoIP が機能しないことです。ただし、geoip_close($gi); の後にすべてを削除すると、- GeoIP は完璧に機能します。
コードで見逃したものは何ですか?多分あなたはより簡単な方法を参照してください?また問題は、maxmind geoip lite がすべての国を認識できなかったため、トラフィックのごく一部が不明になることです。これらのユーザーは失われるべきではありません。
maxmind geocountry lite の「geoip.dat」を使用しました。IPv4 アドレスのみをサポートします。問題は、IPv4 アドレスと IPv6 アドレスの認識をどのように組み合わせるかです。「geoip.dat」と「geoipv6.dat」を同時に使用できますか? そしてどうやって?
どうぞよろしくお願いいたします。私はすべての意見に感謝します。