限制IP段.返回的IP为外网的就转到出错的页面.

解决方案 »

  1.   

    如果局域网是一个IP段,写一个函数,就是将ip转化为十进制整数,比较大小判断!
    ip转化为整数思路:
    a.b.c.d
    将a,b,c,d分别转化为十六进制数,然后合并起来,转化为十进制比较如:192.168.0.1
    c0 a8 00 01
    c0a80001=3232235521
    这样判断就比较方便了!
      

  2.   

    <?php
    $expip=explode(".",$_SERVER['REMOTE_ADDR']);
    $pp=expip[0].expip[1].expip[2];
    if ($pp != "1921680") die("你是非法访问!");
    ?>
    虽然 confu(PHP→Java) ( )  的做法是正确的,但是有片面性
    我这样做的原因:
      因为局域网也可以设置像 221.210.222.230 地址,一般局域网前三段是固定的,只有后一位是活动的
      (如果是分网段的局域网的话,可能后两段可以动)
      这样就可以通过比较访问机器的前多少位地址来判断是否是本局域网内的。。
      
      也许我的说法也欠妥,还请高手指教
      

  3.   

    不用这么复杂吧,在apache里面设置不是更容易些么?
      

  4.   

    用ip地址限很难保证的,这种东西都是在防火墙实现的,可以是软件,也可以是硬件,
    如果真的没办法,可以在apache里面设置,将三个内网段全列出来,禁止访问,就可以了
      

  5.   

    ip2long是什么啊,手册上英文看不懂
      

  6.   

    请注意!楼主是说“怎样去控制一个页面只能在局域网内查看,到外面就不能浏览啊”
    并不是要不能浏览其他页面
    即便设置防火墙或web服务器可以阻止公网访问一个页面,但若需要阻止多个页面时有该如何做呢?枚举吗?
    无论局域网采用什么ip段,这都是在你掌握中的。所以判断起来很简单
    只需在需要限制访问的页面中加入以下代码即可:
    <?php
    $ip_start = ""; //局域网起始ip
    $ip_end = ""; //局域网终止ip
    $ip = $_SERVER['REMOTE_ADDR']; //来访者的ip
    if(!(ip2long($ip_start) <= ip2long($ip) && ip2long($ip) <= ip2long($ip_end))) {
      dir("对不起,您无权查看此页!");
    }
    ?>
    .....正常的页面内容
      

  7.   

    dir("对不起,您无权查看此页!");
    是什么意思
      

  8.   

    config.php
    -----------------
    ip = array("1.1.1.1", '1.1.1.2');
    if(!in_array('访问者ip', $ips)) die("visit deny");
    -----------------
    要限制访问的页面都include conig.php就可以了
      

  9.   

    呵呵
    xu老师指头跳得太快了改:dir("对不起,您无权查看此页!"); => die ("对不起,您无权查看此页!");