有没有办法根据人员位置做一个PHP If语句?
我的问题归结为Amazon Affiliate链接。在Amazon.co.uk上购买DVD的链接与从Amazon.com购买DVD的链接不同,我想要一种只显示正确的方式。
同时,如果他们不在任何一个国家/地区,那么我不希望首先显示该链接。
示例:
If Location = UK; print "amazon-UK-link"
If Location = US; print "amazon-US-link"
If location = None of the above; print nothing
答案 0 :(得分:1)
您可以使用:string geoip_country_code_by_name ( string $hostname )
示例:
<?php
$country = geoip_country_code_by_name('www.example.com');
if ($country) {
echo 'This host is located in: ' . $country;
}
?>
输出:
该主机位于:US
对于您的情况,您可以使用:geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);
获取当前用户的国家/地区代码。
答案 1 :(得分:1)
您将不得不使用访问者的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.。)从数据库中找到您可以download here的IP号码。 例如:IP地址202.186.13.4转换为IP号码3401190660.它位于以下IP号码的开头和结尾之间:
Beginning_IP | End_IP | Country | ISO
-------------+-------------+----------+----
3401056256 | 3401400319 | MALAYSIA | MY
答案 2 :(得分:0)
您需要通过maxmind http://www.maxmind.com/app/ip-location使用geoip,或者有另一个选项,搜索IP到Country API,网络上有一些。
答案 3 :(得分:0)
您可以使用http://www.geoplugin.net/
中的简单API$xml = simplexml_load_file("http://www.geoplugin.net/xml.gp?ip=".getRealIpAddr());
echo $xml->geoplugin_countryName ;
echo "<pre>" ;
foreach ($xml as $key => $value)
{
echo $key , "= " , $value , " \n" ;
}
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
输出
United States
geoplugin_city= San Antonio
geoplugin_region= TX
geoplugin_areaCode= 210
geoplugin_dmaCode= 641
geoplugin_countryCode= US
geoplugin_countryName= United States
geoplugin_continentCode= NA
geoplugin_latitude= 29.488899230957
geoplugin_longitude= -98.398696899414
geoplugin_regionCode= TX
geoplugin_regionName= Texas
geoplugin_currencyCode= USD
geoplugin_currencySymbol= $
geoplugin_currencyConverter= 1
它让你可以玩很多选项
由于
:)