我想收集登录我的网站的用户的国家/地区名称。所以我用了
geoip_country_name_by_name()php 函数就是为了这个目的。
但我遇到了一个致命错误:
Fatal error: Call to undefined function geoip_country_name_by_name()
Run Code Online (Sandbox Code Playgroud)
我怎样才能避免这个错误?
还有其他方法使用 php 获取国家/地区名称吗?
有人能帮助我吗?
我正在尝试使用MaxMind GeoIP数据库,我注意到C API提供了一堆不同的缓存模式作为GeoIP_open初始化调用的标志.
GEOIP_MEMORY_CACHEGEOIP_CHECK_CACHEGEOIP_INDEX_CACHEGEOIP_MMAP_CACHE这些是标志位,因此您可以提供它们中的任何一组,但是没有关于这些标志的含义或它们的作用,或者(或许最重要的)它们如何交互的文档.
该基准测试页面显示,GEOIP_MEMORY_CACHE使得它的速度,同时GEOIP_CHECK_CACHE使得它更慢,但没有迹象显示,为什么你会想使用(或不使用)这些标志.
MaxMind现在提供他们网站上描述的GeoLite2数据库.
问题是他们不再提供CSV下载,只提供二进制MMDB二进制数据库格式.
我在网上找不到任何关于如何解开MMDB格式并将其安装到我的本地MySQL数据库中的内容.
当我在Notepad +中打开MMDB文件时,它只是一个二进制混乱.
如何使用此MMDB文件来扩展我的本地MySQL数据库?
我正在尝试使用MaxMind GeoIP(精简版)数据库。
部分原因是尝试确定我是否可以进行可靠的单元测试。
对于单元测试,我需要有一些IP地址,我可以始终依靠它发送相同的信息。
大多数IP地址都会四处移动,我假设它们在GeoIP数据库中的流动性甚至更高,但是是否有我可以合理依靠的IP地址(无论出于何种原因)?
我试图了解发生了什么事。如果我使用以下命令将单个 IP 添加到我的黑名单中
Require not ip xxx.xxx.xxx.xxx
Run Code Online (Sandbox Code Playgroud)
它正常工作,Apache 2.4 抛出 403。现在我尝试使用整个范围,它仍然让请求通过。我用了:
Require not ip xxx.xxx.xxx.1 xxx.xxx.xxx.255
Run Code Online (Sandbox Code Playgroud)
Apache 2.4 返回 200 而不是 403。我做错了什么?
谢谢
编辑:这是来自我的本地网络的一个简单的测试用例。
Require not ip 192.168.1.180/192.168.1.185
Run Code Online (Sandbox Code Playgroud)
使用ip 192.168.1.183的计算机,并且完全没有被阻止。
这是我的 httpd.conf,ips 位于单独的 blacklist.txt 中。它也适用于单个 IP,问题仅与IP范围有关。
<Directory "f:/root">
Options Indexes FollowSymLinks
AllowOverride All
<LimitExcept GET POST HEAD>
</LimitExcept>
<RequireAll>
Require all granted
Include conf/blacklist.txt
</RequireAll>
</Directory>
Run Code Online (Sandbox Code Playgroud)
Edit2:做了另一个测试,问题似乎来自使用黑名单+ GEOIP。黑名单单独适用于 xxx.xxx.xxx.0/xxx.xxx.xxx.255,但一旦 mod_geoip 处于活动状态,黑名单就会被忽略。
这是我的 GEOIP 配置:
<IfModule geoip_module>
GeoIPEnable On
GeoIPEnableUTF8 On
GeoIPOutput Env
GeoIPScanProxyHeaders On …Run Code Online (Sandbox Code Playgroud) 安装 geoip 时出现依赖冲突。我可以安装 geoip-database 和 geoip-database-extra 包,或者 geoip-database-contrib。我没有注意到它们之间有任何区别,两者都工作正常,正如你在这里看到的那样
那么,它们之间有什么区别吗?哪一个更可取?
在 GeoLite2 国家数据库中,有人知道是否可以在任何地方找到两个字符国家/组织代码的列表或它使用的来源是什么?
我正在使用 maxmind 节点模块与 maxmind 数据库交互。我想要实现的是获取特定州/国家下所有城市的列表。代码如下。
var maxmind = require('maxmind');
maxmind.open('/path/to/GeoLite2-City.mmdb', (err, cityLookup) => {
var city = cityLookup.get('66.6.44.4');
});
Run Code Online (Sandbox Code Playgroud)
我认为没有一个选项可以列出州名称下的所有城市。或通过州/国家名称搜索数据库。还有其他选择吗?
因为我知道区号 - 是地区电话代码,对吗?那么地铁代码栏的用途是什么?
几天前开始我无法下载
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
我用来启用ngx_http_geoip_module模块的数据库.
它一直是免费的,但现在可用.有没有人知道这个数据库最近的变化?