使用PHP在GeoLite2中调用国家参考



我正在尝试使用免费的MaxMind GeoLite2代码来确定特定IP地址的国家/地区。

我正在使用发布在这里的Composer免费方法:通过Maxmind GeoLite2免费获取用户所在城市的本地化名称

我相信这非常简单,但我不知道如何真正传递IP地址并让它返回这个国家。

$reader = new Reader...行之后,我有了$place = $reader->country('##.###.##.###');(其中#是实际的IP地址号),但它不起作用。我试着用"城市"代替"乡村",但也没用。我相信这很简单,我只是不确定我需要使用什么参数才能让国家回归。

错误日志中显示的错误是"PHP致命错误:调用<lt<benchmark.php的路径>>)'

如有任何想法/建议,我们将不胜感激。

在包含的文件中没有定义city()country()函数(基于链接到的答案)。相反,您应该使用get()来获取IP地理信息,如下所示:

require_once __DIR__ . '/' . 'Db/Reader.php';
require_once __DIR__ . '/' . 'Db/Reader/Decoder.php';
require_once __DIR__ . '/' . 'Db/Reader/InvalidDatabaseException.php';
require_once __DIR__ . '/' . 'Db/Reader/Metadata.php';
require_once __DIR__ . '/' . 'Db/Reader/Util.php';     // new 2014/09
use MaxMindDbReader;
$mmdb= 'GeoLite2-Country.mmdb';
$reader = new Reader( __DIR__  . '/' . $mmdb );
$ipData = $reader->get('##.###.##.###');
echo $ipData['country']['names']['en'];

##.###.##.###替换为要获取其信息的IP。显然,这需要您拥有所有必需的代码文件和GeoLite2-Country.mmdb

因此,完整的步骤是:

  1. 从下载MaxMind DB Reader phphttps://github.com/maxmind/MaxMind-DB-Reader-php
  2. src/MaxMind中的Db文件夹复制到包含上述代码的文件所在的目录中
  3. 从下载GeoLite2 Country MaxMind数据库http://dev.maxmind.com/geoip/geoip2/geolite2/
  4. 解压缩下载的gzip,并将GeoLite2-Country.mmdb文件复制到与包含上述代码的文件相同的目录中
  5. 您现在应该可以运行上面的代码了!只需确保用真正的IP替换##.###.##.###即可

这是一种简单的方法。首先,您必须在MySQL中插入用户IP。然后您必须运行fetch查询,类似于

//database connect or includ database php file
//user_ip detect
$geo = json_decode(file_get_contents("http://extreme-ip-lookup.com/json/$user_ip")); 
$country = $geo->country; 
$city = $geo->city; 
$ipType = $geo->ipType; 
$businessName = $geo->businessName; 
$businessWebsite = $geo->businessWebsite; 
echo "Location of $user_ip: $city, $countryn"; 
echo $ip_address;

相关内容

  • 没有找到相关文章

最新更新