检查IP是否属于比利时

时间:2015-07-30 10:58:49

标签: php geolocation

我需要检查用户IP是否属于比利时国家/地区。

我找到了一个清单:http://www.nirsoft.net/countryip/be.html

但我如何将用户IP与这些IP进行比较?

3 个答案:

答案 0 :(得分:0)

您必须使用某些API来获取用户/访问者的国家/地区,例如下面的内容。

http://www.geoplugin.net/json.gp?ip=62.4.159.255

输出

{
  "geoplugin_request":"62.4.159.255",
  "geoplugin_status":206,
  "geoplugin_credit":"Some of the returned data includes GeoLite data created by MaxMind, available from <a href=\\'http:\/\/www.maxmind.com\\'>http:\/\/www.maxmind.com<\/a>.",
  "geoplugin_city":"",
  "geoplugin_region":"",
  "geoplugin_areaCode":"0",
  "geoplugin_dmaCode":"0",
  "geoplugin_countryCode":"BE",
  "geoplugin_countryName":"Belgium",
  "geoplugin_continentCode":"EU",
  "geoplugin_latitude":"50.849998",
  "geoplugin_longitude":"4.35",
  "geoplugin_regionCode":"",
  "geoplugin_regionName":null,
  "geoplugin_currencyCode":"EUR",
  "geoplugin_currencySymbol":"&#8364;",
  "geoplugin_currencySymbol_UTF8":"\u20ac",
  "geoplugin_currencyConverter":0.9098
}

代码示例可在this page上找到。

答案 1 :(得分:0)

使用此第三方库

返回json编码信息

$ip ip待验证

$location = json_decode(file_get_contents('http://freegeoip.net/json/' . $ip));
var_dump($location)

比较$ location数组中的国家/地区

答案 2 :(得分:0)

建议的解决方案需要一些基本的编程和数据库技能。由于您没有提到要求,我将在代码中使用广泛使用的PHP和mySQL进行解释。

  1. 下载并将IP2Location LITE DB1数据库加载到mySQL中。您可以从页面https://lite.ip2location.com/database-ip-country

  2. 获取表格定义
  3. 在需要检测的PHP页面中添加以下代码。

  4.   

    //配置MySQL连接$ host =&#39; localhost&#39 ;; $ user =&#39; root&#39 ;;   $ password =&#39; YOUR_PASSWORD&#39 ;; $ database =&#39; ip2location_database&#39 ;;   $ table_name =&#39; ip2location_db1&#39;;

         

    //获取访问者IP地址$ ip = $ _SERVER [&#39; REMOTE_ADDR&#39;];

         

    //如果您使用127.0.0.1进行本地测试,//可以取消注释   以下行将IP地址//分配给8.8.8.8(或其他)   你的测试。 // $ ip =&#39; 8.8.8.8&#39;;

         

    尝试{//使用PDO $ db = new创建并执行SQL查询   PDO(&#39; mysql:host =&#39;。$ host。&#39 ;; dbname =&#39;。$ database。&#39 ;; charset = utf8&#39;,   $ user,$ password); $ DB-&GT;的setAttribute(PDO :: ATTR_ERRMODE,   PDO :: ERRMODE_EXCEPTION);

         

    $ st = $ db-&gt; prepare(&#39; SELECT * FROM ' . $table_name . ' WHERE   INET_ATON(:ip)&lt; = ip_to LIMIT 1&#39;); $ ST-&GT;执行(阵列(&#39;命令ip&#39; = GT; $ IP));

         

    $ row = $ st-&gt; fetch(PDO :: FETCH_ASSOC);

         

    //打印出结果var_dump($ row); } catch(PDOException $ e){     echo $ e-&gt; getMessage(); }

    1. 您可以查看屏幕上的记录输出。将country_code变量用于国家/地区结果。