盗链保护(hotlink protection)

2019-08-02 10:17发布

我做了这个简单的代码,以防止我的PHP下载文件盗链我的文件:

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

它不工作,它总是重定向即使我点击我的wbesite里面的链接我的index.php。 我试图域变化很多类型,如:

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

但还是同样的问题

Answer 1:

我找到了解决办法,我只是做之间的比较HTTP_REFERERHTTP_HOST使用strpos ,如果他们匹配意味着没有盗链。 代码 :

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


Answer 2:

实际上,你想用!== FALSE来代替。 该字符串可能是在位置0 。 还包括zerkms'建议:

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

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



文章来源: hotlink protection