最近帮学校弄个网站,有这样的需求:部分栏目只对校内访客开放,不允许校外访问,知道该如何实现,有经验的高手请指点下。

解决方案 »

  1.   

    IP过滤。或者链接地址只给内部的IP。一般都是后者哈哈。
      

  2.   

    请问能否通过Apache设置达到目的?
      

  3.   

    apache里可以设置那些目录的那些地址可以访问的。
      

  4.   

    对来访的ip进行甄别是最简单有效果的手段的。或者通过设置htaccess来处理也可以。另外说一点:来路可以伪造,IP是伪造不了的。别说curl 或snoopy可以伪造ip ,事实证明,更本没用。
    其实简单想想也知道,要真能伪造ip,我做一个循环不断变换ip和来路 连接我的网站,都不需要seo我的网站就能在地址统计站中(cnzz 51.la等等)数据暴涨,在baidu中的排名直线上升。 我所知道的,至少在php下是无法真正伪造IP的。那是哄小孩的玩意。
      

  5.   

    普遍的做法是根据IP来进行屏蔽,参考:PHP检查(屏蔽)IP、IP段函数利用本函数可以检查一组IP或IP段是否在禁止列表中
    php 代码
    /* 
    *PHP IP检查函数 
    *Created By 枫行天下 
    *E-mail: [email protected] 
    *HomePage: http://www.msphome.cn/ 
    *Last Update: 2009-01-31 
    *思路来源于ASP中的一个IP检查函数,原作者已不可考证 

    *$userip,要检查的IP,$badiplist,要禁止的IP列表,每个IP用换行符分隔 
    *若IP在列表中,返回true,否则返回false 
    *IP列表示例 
    * 127.0.0.0 #禁止此IP 
    * 192.168.1.* #禁止此IP段 
    * 10.10.*.10 
    * 0.*.0.* 
    */
    echo chkip($ip, "127.0.0.1");php 代码
    //检查IP地址是否在黑名单中 
    function chkip($userip, $badiplist) { 
        $a_badip = explode("\n",$badiplist); 
        $a_ippart = explode(".", $userip); 
        if (!is_array($a_badip)) return false; 
        for ($i = 0; $i < count($a_badip); $i++) { 
            $counter = 0; 
            $a_badippart = explode(".", $a_badip[$i]); 
            for ($j = 0; $j < count($a_badippart); $j++) { 
                if (((string)$a_badippart[$j] == "*") || ((string)$a_ippart[$j] == (string)$a_badippart[$j])) { 
                    $counter++; 
                } 
            } 
            if ($counter == 4) return true; 
        } 
        return false; 
    }