1

私は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」を同時に使用できますか? そしてどうやって?

どうぞよろしくお願いいたします。私はすべての意見に感謝します。

4

0 に答える 0