2

我制作了这个简单的代码来防止从我的 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

但仍然是同样的问题

4

2 回答 2

4

HTTP_REFERER我找到了解决方案,我只是在和HTTP_HOSTusing之间进行了比较strpos,如果它们匹配,则意味着没有盗链。编码 :

if($_SERVER['HTTP_REFERER'])
   {
      if(!strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))
         {
            $redirect='index.php'; 
            header("Location: $redirect");
         }
   }
于 2012-11-07T03:00:47.663 回答
1

您实际上想!== FALSE改用。字符串可能在 position 0。还包括 zerkms 的建议:

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

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

于 2012-11-07T02:44:19.723 回答