根据IP显示国家国旗

经过2天的开发,终于把这个能够根据IP地址显示国家国旗的程序开发出来了 :)

演示:

  1. 调用 <img src=”http://photozero.net/api/img.php”>
    显示 (无参数,显示访问者的国家国旗)
  2. 调用 <img src=”http://photozero.net/api/img.php?s=64.233.189.104“>
    显示 (输入需要查询的IP地址或主机如 www.google.com ,显示该IP/HOST的国家国旗)
  3. 访问  http://photozero.net/api/xml.php?s=64.233.189.104
    用XML文件显示该IP的相关信息如:
    <?xml version="1.0" encoding="UTF-8"?>
    <ipquery>
    <query s="64.233.189.104" />
    <return status="1" ip="64.233.189.104" country="United States" countryabbreviation="US" img="http://photozero.net/api/icon/png/us.png" />
    <info runtime="0.1131010055542 s" />
    </ipquery>

需要用的朋友去试试,我的Reviewers_Info插件也会尽快添加这个功能。

做这个程序主要有2个难点:

一.IP数据来源,国内有纯真IP数据库,但它的国家、地区是用中文储存的,而该程序需要用到2位字符的国家英文代码(如 cn,us)作为图片的链接(如 http://example.com/cn.png),纯真数据库并没有提供,且纯真数据库虽然提供较完整数据,但相对于只需要国家代码,存那么多的数据就有点臃肿了。所以只能用国外提供的数据库了。上Google搜一下,国外某些数据库还是不错的,但都是企业级应用,动辄上百上千$的费用不是我能支付的。后来找到了与Firefox插件Flagfox中使用相同数据的http://geotool.servehttp.com,并通过链接找到了Maxmind(不知为何这个网站被瑞星防火墙阻挡了)提供的数据库,这个数据库数据比较整洁,只有起止IP、国家英文名、国家缩略名如:

“2.6.190.56″,”2.6.190.63″,”33996344″,”33996351″,”GB”,”United Kingdom”
……
……

这个数据库不错,它是CVS格式的,我又费了好些时间将它导入到MySQL数据库中。接下来就好办了,输入一个IP就容易得出国家信息了。在效率方面,使用Coolcode写的利用 QQWry.Dat 实现 IP 地址高效检索(PHP)的方法(从DAT文件中搜索)每搜索一次约耗时 0.01-0.1秒,而该程序利用数据库搜索(约10万条数据),约耗时0.1-0.2秒,虽然耗时长了点,但还在可以接受范围内的。

二.国家国旗数据,在百度上找的国旗数据,不是不够完整就是图片太丑陋,显示效果一般,或者是没有匹配的杂乱排序,如 015454.gif 这样的文件名,难道叫我来分辨200多个国家地区?最后终于在FAMFAMFAM找到了完整的国旗,并配有 GIF/PNG 格式,大小普遍在16*11左右(少数国旗非常规形状除外,如尼泊尔),其命名规则也是 cn.png jp.png 这样的格式,刚好满足我的要求。

终于写好了~~~~~~前面走了不少弯路,太累了。希望看到的朋友都支持一下,或者下载Reviewers_Info这个插件试用一下~~~~~~

该文章发布在 PHP,标签:, , 。收藏该永久链接

有 23 条《根据IP显示国家国旗》的回复

  1. jackie 说到:

    这个插件不厚道,泄露隐私。

    • neekey 说到:

      我有考虑过这样的问题,你也可以输入如 64.233.189.X 这样的IP也可以得到正解。但由于时间关系,我的Reviewers_Info插件暂时没有过滤,估计下一版本会改进。
      且有些IP段每隔3-5个IP就换一个国家,也很头疼。

  2. Yacca 说到:

    有的网友就是喜欢知道来的人从哪来…呵呵 喜欢的人会乐不思蜀^^

    赞记.

  3. Dianso 说到:

    国家国旗数据在firestats中有很完整的

    • neekey 说到:

      我在官方主页找不到firestats。。。

      • Dianso 说到:

        firestats.cc
        就是了

        • neekey 说到:

          找到了。。我觉得这个应该算得上准专业级的网站统计,它的定位应该是类似于clicki.cn 这样的统计,不适合针对插入的留言者的信息进行分析吧?

          • Dianso 说到:

            这个插件很强大的,可以使用独立的数据库,一共19个表。
            直接后台启用就开始统计了。
            除了基本的统计访问者外,还可以列出热门文章,支持widget,可以给留言增加国家标志,插件自带IP-国家对应数据库,也可以显示留言者的操作系统、浏览器图标,我觉得你上次找数据库和国旗资源,其实下载这个插件,从里面复制就很方便

          • neekey 说到:

            呵呵,感谢了!

  4. 流星 说到:

    期望能够增加一个功能。
    我装了这个插件,一个台湾朋友留言,显示了国民党旗。我咨询了空间提供商,对方认为有问题,要求不显示国旗,于是我被迫暂时停用这个插件。

    建议:
    是否可以自由选择是否将国旗显示出来。
    比如说没问题的,就可以全部显示。但是我觉得显示国旗没需要的,就只显示系统图标和浏览器图标。

  5. 流星 说到:

    搞定了
    呵呵,啥时间更新啊预计?

  6. 流星 说到:

    enen
    提个建议
    目前这个显示,只能显示第一个发评论的,而不能显示回复评论的人,是否可能让回复评论的人也显示出来?