我是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,其他链接应随机查看6,7或8。 问题是只有第三部分,随机重定向,在代码中工作,GeoIP不起作用。 但是在geoip_close($ gi)之后删除所有内容时; - GeoIP非常完美。
我在代码中错过了什么?也许你看到更简单的方法?问题是,maxmind geoip lite无法识别所有国家,因此流量的一小部分将是未知的 - 这些用户不应该丢失。
我使用了maxmind geocountry lite的“geoip.dat”。它仅支持IPv4地址,问题是如何结合IPv4和IPv6地址的识别。可以同时使用“geoip.dat”和“geoipv6.dat”吗?怎么样?
提前感谢您的帮助!我会感激每一个意见。