Dav*_*ith 34 javascript php country timezone country-codes
我需要为我的网站显示美国和非美国访问者的不同链接.这只是为了方便,所以我不是在寻求超高度的准确性,安全性或欺骗也不是问题.
我知道有地理位置定位服务和列表,但这似乎有点矫枉过正,因为我只需要(大致)确定这个人是否在美国.
我正在考虑使用JavaScript来获取用户的时区,但这似乎只能给出偏移量,因此加拿大,墨西哥和南美洲的用户与美国人的价值相同.
在JavaScript或PHP中是否有任何其他信息可用,除了抓取IP地址和进行查找,以确定这一点?
CMS*_*CMS 48
有一些免费服务可以让你从客户端进行国家和基于IP的地理定位.
我使用了wipmania免费的JSONP服务,它使用起来非常简单:
<script type="text/javascript">
// plain JavaScript example
function jsonpCallback(data) {
alert('Latitude: ' + data.latitude +
'\nLongitude: ' + data.longitude +
'\nCountry: ' + data.address.country);
}
</script>
<script src="http://api.wipmania.com/jsonp?callback=jsonpCallback"
type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用支持JSONP的框架,例如jQuery,您可以:
// jQuery example
$.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data) {
alert('Latitude: ' + data.latitude +
'\nLongitude: ' + data.longitude +
'\nCountry: ' + data.address.country);
});
Run Code Online (Sandbox Code Playgroud)
检查上面的代码运行在这里.
最佳指标可能是HTTP Accept-Language标头.它在HTTP请求中看起来如下所示:
GET / HTTP/1.1
Accept: */*
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; MDDC; OfficeLiveConnector.1.4; OfficeLivePatch.0.0; .NET CLR 3.0.30729)
Accept-Encoding: gzip, deflate
Host: www.google.com
Connection: Keep-Alive
Run Code Online (Sandbox Code Playgroud)
您应该能够使用以下方法在PHP中检索它:
<?php
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
?>
Run Code Online (Sandbox Code Playgroud)