基于地理位置的PHP IF Station?

基于地理位置的PHP IF Station?,php,ip-geolocation,Php,Ip Geolocation,是否有一种基于人员位置执行PHP If语句的方法 我的问题归结到亚马逊附属链接。在Amazon.co.uk上购买DVD的链接与在Amazon.com上购买DVD的链接不同,我想找到一种只显示正确DVD的方法 同时,如果他们不在任何一个国家,那么我不希望首先显示链接 例如: If Location = UK; print "amazon-UK-link" If Location = US; print "amazon-US-link" If location = None of the above

是否有一种基于人员位置执行PHP If语句的方法

我的问题归结到亚马逊附属链接。在Amazon.co.uk上购买DVD的链接与在Amazon.com上购买DVD的链接不同,我想找到一种只显示正确DVD的方法

同时,如果他们不在任何一个国家,那么我不希望首先显示链接

例如:

If Location = UK; print "amazon-UK-link"
If Location = US; print "amazon-US-link"
If location = None of the above; print nothing
<?php
$country = geoip_country_code_by_name('www.example.com');
if ($country) {
    echo 'This host is located in: ' . $country;
}
?>

您需要使用maxmind的geoip,或者还有另一个选项,搜索IP到国家/地区API,在web上有一些。

您可以使用:

例如:

If Location = UK; print "amazon-UK-link"
If Location = US; print "amazon-US-link"
If location = None of the above; print nothing
<?php
$country = geoip_country_code_by_name('www.example.com');
if ($country) {
    echo 'This host is located in: ' . $country;
}
?>

输出:

该主机位于:美国


对于您的案例,您可以使用:
geoip\u country\u code\u by\u name($\u SERVER['REMOTE\u ADDR')
获取当前用户的国家/地区代码。

您必须使用访问者的IP地址来查找他们的实际位置。除了使用PHP的GeoIP扩展(正如stewe指出的那样),还有两种方法可以做到这一点:

简单的方法

使用外部服务,如

使用您自己的MySQL数据

1.)检索访问者的IP地址:

if (getenv('HTTP_X_FORWARDED_FOR')) 
{
    $ip_address = getenv('HTTP_X_FORWARDED_FOR');
} 
else 
{
    $ip_address = getenv('REMOTE_ADDR');
}
2.)将访问者的IP地址转换为IP号码:

$ips = explode(".",$ip_address);
return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256);
3.)从数据库中找到IP号码,您可以使用该号码。 例如:IP地址202.186.13.4转换为IP号340119660。它位于以下IP号码的开始和结束之间:

Beginning_IP | End_IP      | Country  | ISO
-------------+-------------+----------+----
3401056256   | 3401400319  | MALAYSIA | MY

您可以从中使用一个简单的API

它让你有那么多的选择,你可以玩

谢谢


:)

简单,询问用户。唯一可靠的方法,达贡是对的。你可以随心所欲地使用IP定位服务,但没有一个是100%准确的,而且某些类型的代理是无法检测的(因此会检查错误的IP)。我想这并不意味着定位服务不值得一试。顺便说一句,如果你没有设置geoip,那就不起作用了。请参阅关于如何设置geoip的说明:我认为getenv(HTTP_X_FORWARDED_FOR)应该是getenv('HTTP_X_FORWARDED_FOR'),对于远程地址也是如此。另外,人们通常使用$\u SERVER或$\u ENV,不过我想getenv()没有什么问题。另外,哇,hostip.info认为我的IP在加利福尼亚。我实际上在阿肯色州。只是检查了一些其他服务,他们都得到了正确的答案。(MaxMind把它带到大约3英里)。显然,我住在英格兰北部的一条河岸上。实际上我在英格兰西南部的农村。这么近。