假设我的站点是 a.com 有图片a.com/123.pngb.com 使用该图片的时候 http_referer 是?然后直接在地址栏输入a.com/123.png http_referer 是b.com我想问的是怎么判断图片是其它站被引用还是用户直接访问?phpreferer

解决方案 »

  1.   

    Request.ServerVariables["HTTP_REFERER"]
    Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString())在外链点进去的时候 HTTP_REFERER也带着这个网站的主机地址呢
    加个IF语句来判断。然后tostring解析到地址,就可以用计数器判断了
      

  2.   

    直接浏览器输入 HTTP_REFERER 为空
    从页面链接过来 HTTP_REFERER 为那个页面的url但是需要注意的是,所有有 HTTP_ 前缀的变量都是访问方提供的,可靠性极低
      

  3.   

    你只能靠HTTP_REFERER来判断,虽然这个不是很靠谱可以伪造。
      

  4.   

    $_SERVER['HTTP_REFERER']里面
    至于里面参数好像有点多。打出来慢慢看。
      

  5.   

    楼主说的这个问题就是盗链啊。<?php
     header("content-type:text/html; charset=utf-8");
     if(isset($_SERVER['HTTP_REFERER'][
    ])){
     
    //判断$_SERVER['HTTP_REFERER'是不是以http://localhost/test/为开头的
    //如果是,则说明是本网站,如果不是,则说明不是本网站,
    if(strpos($_SERVER['HTTP_REFERER'],"http://localhost/test/")==0){
    echo '这是本站访问';

    }else{
    //跳转到警告页面
    header('Location:warning.php');
    }
     
     }else{
    //跳转到警告页面
    header('Location:warning.php');
     }以上这段代码是我自己写的一段反盗链的代码。你的问题,一看这段代码就能够解决。在传智播客韩顺平php系列视频中的第84讲就讲到了这个反盗链的问题。可以更清楚的了解了。