热链接保护

时间:2012-11-07 02:41:19

标签: php hotlinking

我制作了这个简单的代码,以防止我的文件从我的php下载文件链接:

if ((strpos($_SERVER['HTTP_REFERER'],'www.domain.com')!==0)) {
    $redirect='index.php';
    header("Location: $redirect");
    exit;
}

它没有用,它总是将我重定向到index.php,即使我点击了我的wbesite里面的链接。 我试图将域名更改为多种类型:

  

http://www.domain.com
www.domain.com
domain.com

但仍然是同样的问题

2 个答案:

答案 0 :(得分:1)

我找到了解决方案,我只是使用HTTP_REFERERHTTP_HOSTstrpos进行了比较,如果它们匹配则意味着没有热链接。代码:

if($_SERVER['HTTP_REFERER'])
   {
      if(!strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))
         {
            $redirect='index.php'; 
            header("Location: $redirect");
         }
   }

答案 1 :(得分:0)

您实际上想要使用!== FALSE。该字符串可以位于0位置。还包括zerkms的建议:

if (!empty($_SERVER['HTTP_REFERER']) && 
    (strpos($_SERVER['HTTP_REFERER'],'www.domain.com') !== FALSE)) {

文档:http://php.net/manual/en/function.strpos.php