比如:我有一个商品出售的网站,为了保证网站访问速度我想禁止图片盗连,也就是禁止在别的网站直接引用路径访问我网站的图片(就像163想册那样,如果违规访问提示错误!!),不知道用php代码如何实现呢?
希望大家能帮忙提供一下解决方案,讲下原理,提供个代码吧~~~!谢谢了

解决方案 »

  1.   

    .htaccess 方法
    RewriteEngine onRewriteCond %{HTTP_REFERER} !^$ [NC]
    RewriteCond %{HTTP_REFERER} !your.com[NC]
    RewriteCond %{HTTP_REFERER} !google.com [NC]
    RewriteCond %{HTTP_REFERER} !baidu.com [NC]RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]RewriteRule ^(.*)$ http:\/\/your.com\/image\/$1 [L]
      

  2.   

    谢谢朋友们的热情解答!除了修改服务器端的设置,不知道有没有通过编写php网站代码可以实现的办法呢?
      

  3.   

    和一楼一样,判断HTTP_REFERER
    $_SERVER['HTTP_REFERER']
    根据这个变量取得域名,如果不是你网站的,就返回盗链
      

  4.   

    盗连直接调用网站的图片路径,例如:http://www.163.com/images/index.jpg
    不知道应该把判断HTTP_REFERER 加在什么地方呢?
    直接引用路径似乎网站的php文件也不触发吧,有怎样调用判断HTTP_REFERER !
      

  5.   

    图片放非web目录
    程序读取或转换目录
      

  6.   

    如果不能用.htaccess控制,又不能修改服务器
    那只能用PHP输出图片images:或者其它乱七八糟的asdfasdfasdfasfd之类,加上搜索BOT不能访问文件的文件夹,里面文件后缀随便
    index.php?id=XXX形式访问
    <?
    if($_SERVER['HTTP_REFERER']=='your.com' | $_SERVER['HTTP_REFERER']=='')
    {
    Header("Content-type: image/gif");
    $image=$_GET["id"];
    $wFile='./img/'.$image.'.gif';
    $im=imageCreatefromgif($wFile);
    $imgw=imagesx($im);
    $imgh=imagesy($im);
    ImageGIF($im);
    }else{
    echo '<img src="daolian.gif">';
    }
    ?>
    试试这样,牺牲点性能
      

  7.   

    办法还是有的,不过估计你也用不了。把图片以2进制流的方式存入数据库,再用PHP读取输出,这个可以非常非常耗资源的。这是唯一一个不修改服务器相关配置的方法。