zoukankan      html  css  js  c++  java
  • 通过 IP 区分不同国家的用户

    在 PHP 通过 IP 区分国家

    如何用 PHP 通过 IP 区分国家和地区呢? Maxmind.com 提供一套 GeoIP 的解决方案, 只需要简单几步即可在 PHP 中通过 IP 判断访客的国家.

    1. 下载数据库和 PHP 库文件

    2. 通过 PHP 代码获取国家信息
    以下是一段示范代码, 演示如何获取国家代号和国家名称.

    <?php
     
    // 引入 PHP 库文件
    include("geoip.inc");
     
    // 打开本地数据库, 数据保存在 GeoIP 文件中.
    $geoData = geoip_open('GeoIP.dat', GEOIP_STANDARD);
     
    // 获取国家 IP
    $countryCode = geoip_country_code_by_addr($geoData, $_SERVER['REMOTE_ADDR']);
     
    // 获取国家名称
    $countryName = geoip_country_name_by_addr($geoData, $_SERVER['REMOTE_ADDR']);
     
    // 关闭本地数据库
    geoip_close($geoData);
     
    ?>

    在 WordPress 中通过 IP 区分国家

    既然 PHP 上使用没问题, WordPress 肯定也是 Okay 的. 看看我是怎么使用的.

    1. 放置数据库文件
    将 GeoIP.dat 解压到 WordPress 根目录中. (你可以在这个目录找到 wp-config.php 或者 wp-config-sample.php 文件)

    2. 编写调用接口
    在主题目录中新建文件夹 include, 将 geoip.inc 放置在新建文件夹中. 并在该文件夹新建文件 geoip.php 文件内容如下.

    <?php
     
    include('geoip.inc');
     
    global $countryCode;
     
    $geoData = geoip_open('GeoIP.dat', GEOIP_STANDARD);
    $countryCode = geoip_country_code_by_addr($geoData, $_SERVER['REMOTE_ADDR']);
    geoip_close($geoData);
     
    ?>

    这里只取国家代号作为判别依据. 并且国家代号是全局变量, 以避免页面多处判断需要反复访问 GeoIP.dat 获取信息, 减少程序开销.

    2. 调用接口, 获取国家代号
    3. 打开 header.php 文件, 在文件顶部加入代码如下.

    <?php include('include/geoip.php'); ?>

    4. 使用国家代号
    在主题中调用代码, 例子如下.

    <?php
     
    global $countryCode;
     
    if($countryCode == 'CN') {
        // 中国大陆地区执行的代码
    } else if($countryCode == 'US') {
        // 美国地区执行的代码
    } else {
        // 中国大陆和美国以外地区执行的代码
    }
     
    ?>

    总结

    通过 IP 判断访客来源十分精准的, 现在一些外贸网站都是通过这个方法向用户进行展示区分, 比如美国地区的用户默认看到美国能买到的商品和美国物流信息. 但不是百分之百的准确, 比如某人常年FQ, 那他可能一直看不到本国的信息. 至于是否需要区分处理, 网站主要有所考虑.

    可能有人会问, 加这么个东西, 性能如何? 会不会要求强大的服务器? 我测试过, 正常的服务器上几乎不影响页面加载性能, 可以看看这个博客的速度. 如果不放心, 自己测一下.

  • 相关阅读:
    webpack-dev-server的使用及说明
    Web框架
    HTTP协议
    jQuery的使用
    发红包
    python操作mysql
    mysql索引与补充
    JavaScript之BOM操作
    JavaScript之DOM操作
    JavaScript之基础语法
  • 原文地址:https://www.cnblogs.com/58top/p/2652597.html
Copyright © 2011-2022 走看看