http_reffer是浏览器发送的
只有点链接的时候才有

解决方案 »

  1.   

    没办法解决...干吗不用SESSION防盗链??REFERER不总是真实的呢...
      

  2.   

    如果那样子不行,那只有用session了,这也是发现这个问题之后才想到的。
      

  3.   

    session防盗链比较好。
    不过我想,总有软件也可以模拟session的吧。
      

  4.   

    当然可以模拟..要真正防盗是很难的...一般防盗主要是为了防止资源大量被外面的,并没有进入本站的人读取吧?
    如果要模拟SESSION,对于大多数非技术人员来说,是比较麻烦的一件事,偶尔一两个技术人员去盗盗也就算了..
      

  5.   

    $_SESSION['HTTP_REFERER'] = isset($_SESSION["BACKURL"]) ? $_SESSION["BACKURL"] : "";
    $_SESSION["BACKURL"] = "http://".$_SERVER['HTTP_HOST'].$_SERVER["PATH_INFO"].(isset($_SERVER['QUERY_STRING']) ? "?".$_SERVER['QUERY_STRING'] : "");在每个页面里加入这样子的语句,进行防盗连。再用这样子的函数进行判断,大家看看是不是还有什么不足之处。 /* 
     * 功能:检测页面是否合法连接过来
     * 如果为非法,就转向到登陆窗口
     */
    function checkurl(){
    //如果直接从浏览器连接到页面,就连接到登陆窗口
    //echo "referer:".$_SESSION['HTTP_REFERER'];
    if(!isset($_SESSION['HTTP_REFERER'])) {
    header("location: index.php");
    exit;
    }
    $urlar = parse_url($_SESSION['HTTP_REFERER']);
    //如果页面的域名不是服务器域名,就连接到登陆窗口
    if($_SERVER['HTTP_HOST'] != $urlar["host"] && $urlar["host"] != "10.1.1.1" && $urlar["host"] != "www.pyhosp.com") {
    header("location: index.php");
    exit;

    }