大家好!
我想限制国内ip访问我的网站可以行得通吗?
如果是国内ip访问的话就提示需要输入密码才能进入浏览;
非国内ip访问就不需要输入密码直接进入浏览;
这样可以实现吗用php?

解决方案 »

  1.   

    在入口文件中 通过$_SERVER['REMOTE_HOST'](正在浏览当前页面用户的主机名),获取客户端ip进行过滤。
      

  2.   

    两位的意思综合起来:
    1、查找国内的ip段
    2、获取当前访问的用户主机(ip地址)与国内ip比较进行条件判断处理是吗?
      

  3.   

    是,discuz就這麼做的
      

  4.   

    apache是否可以设置 不同的ip段访问不同的页面呢?
      

  5.   

    已找到方法:GeoIP PHP实现案例
    GeoIP数据库是广泛使用的商业IP数据库,GeoIP数据库免费版提供国家代码的信息,也就是说能够精确到IP地址所在地国家,如果你要更精确的IP地址定位,那么你需要购买更高版本。这里给出一个GeoIP Lite版本的下载地址和简单应用。GeoIP 数据库文件下载:
    http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP....GeoIP的PHP API文件打包下载地址:
    http://geolite.maxmind.com/download/geoip/api/php/php-1.11.tar.gzGeoIP查询PHP脚本:下面的代码能够给出访问者IP的国家代码与国家名称<?php
        //计时开始
        function utime() {
            $time = explode( " ", microtime() );
            $usec = (double)$time[0];
            $sec = (double)$time[1];
            return $usec + $sec;
        }
        $startTimes = utime();
     
        include("geoip.inc");
     
        // open the geoip database
        $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
     
        // 获取国家代码
        $country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
        echo "Your country code is: <strong>$country_code</strong> <br />";
     
        // 获取国家名称
        $country_name = geoip_country_name_by_addr($gi, $_SERVER['REMOTE_ADDR']);
        echo "Your country name is: <strong>$country_name</strong> <br />";
     
        // close the database
        geoip_close($gi);
     
        //运行结束时间
        $endTimes = utime();
        $runTimes = sprintf( '%0.4f', ( $endTimes - $startTimes ) );
        echo "Processed in " . $runTimes . "second.";
    ?>
      

  6.   

    GeoIP 这个我试了怎么没有显示国家?除了时间都是空的!
      

  7.   

    如果服务器是你自己的话就比较简单了,windows服务器可以在管理工具里的本地安全策略里拒绝某个ip段,而linux更简单,只需要设置一下防火墙就行了.
      

  8.   

    可以啊,可以设置IP段,JS很方便