有没有一种方法可以根据人员位置执行PHP-If语句?
我的问题归结为亚马逊联盟链接。在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
您可以使用:string geoap_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;
}
?>
输出:
此主机位于:美国
对于您的情况,您可以使用:geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);
来获取当前用户的国家代码。
您必须使用访问者的IP地址来查找他们的物理位置。除了使用PHP的GeoIP扩展(正如stewe所指出的),还有两种方法:
简单的方法
使用外部服务,如http://www.hostip.info
使用您自己的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.1886.13.4转换为IP号3401190660。它位于以下IP号码的开头和结尾之间:
Beginning_IP | End_IP | Country | ISO
-------------+-------------+----------+----
3401056256 | 3401400319 | MALAYSIA | MY
您需要通过maxmind使用大地水准面http://www.maxmind.com/app/ip-location或者还有另一个选项,搜索IP到国家API,在网上有一些。
您可以从http://www.geoplugin.net/
$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
它让你有很多选择,你可以玩
感谢
:)