什么是检查用户国家的最佳解决方案?
服务,让API的什么是检查用户国家的最佳解决方案?
我读/听说有一个大量的服务,让API来做到这一点,但是我真的不想依靠任何人,所以请,如果有一种方法可以做到没有他们让我知道。
服务器端
同时,我读/听说这是在服务器端进行编码是什么让我困惑,我一直认为这是通过使用Javascript完成。
IP列表
而且我也看了/听说,让API的这些服务,他们有一个非常庞大的IP的列表,从ISP的,他们可以通过这个列表决定该国,这是真的吗?如果我想在没有API的情况下独自完成,我是否也应该有一个列表?
当我做我的查找,我用这个脚本:http://www.phptutorial.info/iptocountry/the_script.html
该DB的PHP文件的列表,您可以订阅一个列表,它会通知你的数据库的更新。非常有用,如果你没有数据库:)
谢谢这是一个非常有用的链接:) – Adam 2010-11-26 16:17:29
任何检查通常走IP和使用一些数据库的IPranges和什么国家泰国分配。
这在大多数情况下工作,除非用户使用一些代理或likewize。
大多数这些花费金钱或仅为某些目的可用。
另一个解决方案,但不是可靠的是使用浏览器langugae,并可能如果你可以查询时区。
我没有任何特定的服务,建议作为他们大多不允许商业用途,因此我不能使用它们;)
嗯非常感谢你的回答,浏览器时区是一个非常好的主意,我不知道存在这样的在浏览器中的一件事,但它有多可靠?我的意思是浏览器兼容性,以及它的工作原理 – Adam 2010-11-26 16:19:43
的MaxMind提供GEOLITE上国家 IP数据库,这也被一些网络日志分析器一样的Webalizer和AWStats的使用或支持。
它是免费的CSV格式,您可以导入到您的应用程序的数据库中。 他们还提供guides and examples的全面收集。
获取用户国家的简单方法是读取HTTP_ACCEPT_LANGUAGE标头。
下面一个例子(PHP):
$langcodes=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
if(preg_match("/(bg|bg-BG|cs|cs-CZ|da|da-DK|de|de-AT|de-CH|de-DE|de-LI|de-LU|el|el-GR|en-GB|en-IE|es-ES|et|et-EE|fi|fi-FI|fr-BE|fr-CH|fr-FR|fr-LU|fr-MC|ga|hu|hu-HU|it|it-CH|it-IT|lt|lt-LT|lv-LV|lv|mt|mt-MT|nl|nl-BE|nl-NL|pl|pl-PL|pt-PT|ro|ro-RO|sk|sl|sk-SK|sv|sv-FI|sv-SE|fr)([,;].*)?$/i",$langcodes)
|| preg_match("/(\.ad|\.al|\.at|\.ax|\.ba|\.be|\.bg|\.by|\.ch|\.cy|\.cz|\.de|\.dk|\.ee|\.es|\.eu|\.fi|\.fo|\.fr|\.gb|\.gg|\.gi|\.gr|\.hr|\.hu|\.ie|\.im|\.is|\.it|\.je|\.li|\.lt|\.lu|\.lv|\.mc|\.md|\.me|\.mk|\.mt|\.nl|\.no|\.pl|\.pt|\.ro|\.rs|\.se|\.si|\.sk|\.sm|\.ua|\.uk|\.va)$/i", $host))
{
echo "European User";
}
else
echo "non-European User";
你的意思是用户的当前地理位置? – Gumbo 2010-11-26 17:06:14
嗯我的意思是国家,例如美国,俄罗斯,中国等 – Adam 2010-11-26 20:41:24