Php 什么';检查用户所在国家/地区的最佳解决方案是什么?
提供API的服务 我读到/听说有很多服务提供API来实现这一点,但是我真的不想依赖任何人,所以如果有没有他们的方法,请让我知道 服务器端 我还听说这是在服务器端编码中完成的,这让我感到困惑,我一直认为这是通过Javascript完成的 IP列表Php 什么';检查用户所在国家/地区的最佳解决方案是什么?,php,Php,提供API的服务 我读到/听说有很多服务提供API来实现这一点,但是我真的不想依赖任何人,所以如果有没有他们的方法,请让我知道 服务器端 我还听说这是在服务器端编码中完成的,这让我感到困惑,我一直认为这是通过Javascript完成的 IP列表 我还读到/听说那些提供API的服务,他们有一个非常庞大的ISP IP列表,他们可以通过这个列表来确定国家,这是真的吗?如果我想在没有API的情况下单独使用它,我也应该有一个列表吗?当我进行查找时,我使用了以下脚本: db是php文件的列表,您可以订阅一个
我还读到/听说那些提供API的服务,他们有一个非常庞大的ISP IP列表,他们可以通过这个列表来确定国家,这是真的吗?如果我想在没有API的情况下单独使用它,我也应该有一个列表吗?当我进行查找时,我使用了以下脚本:
db是php文件的列表,您可以订阅一个列表,该列表将通知您数据库更新。如果你没有数据库,这非常有用:)任何检查通常都会通过IP进行,并使用一些ipranges数据库以及它们被分配到哪个国家 这在大多数情况下都有效,除非用户使用某种代理或类似的Wize 其中大多数都需要钱,或者只能用于某些目的 另一个解决方案是使用浏览器Language,如果可以查询时区的话,也可以使用浏览器Language 我没有任何具体的服务可推荐,因为大多数服务不允许商业使用,因此我无法使用它们;) 以下是谷歌推荐的一个解决方案(实际上是3个解决方案): MaxMind提供GeoLite国家IP数据库,一些web日志分析器(如Webalizer和AWStats)也使用或支持该数据库 它以CSV格式免费提供,您可以将其导入应用程序的数据库。
它们还提供了一个全面的。获取用户所在国家/地区的简单方法是阅读HTTP\u ACCEPT\u语言标题 下面是一个示例(PHP):
嗯,非常感谢你的回答,浏览器时区是一个非常好的主意,我不知道浏览器中存在这样的东西,但是它有多可靠?我指的是浏览器兼容性,以及它是如何工作的?嗯,但时区的问题是,在同一时区中有很多国家:OIT不如一个好的GeoIP表可靠,但将语言+时区结合起来至少会给出一些关于它们可能来自何方的提示。这完全取决于你需要这些信息的目的和可靠性。你指的是用户当前的地理位置吗?嗯,我指的是国家,例如美国、俄罗斯、中国等。这是一个javascript解决方案,而不是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";