Home  >  Article  >  CMS Tutorial  >  How to prevent hotlinking in dedecms software download channel

How to prevent hotlinking in dedecms software download channel

藏色散人
藏色散人Original
2019-12-24 09:47:302477browse

How to prevent hotlinking in dedecms software download channel

dedecms How to prevent hotlinking in software download channels?

Due to website revision, many previous websites were linked to our internal pages. This results in a poor user experience and prevents some websites from stealing our resources.

Recommended study: 梦Weavercms

dedeThe shortcomings of making a software site

is that others repost your downloads When reposting http://www.xxx.com/plus/download.php...

, you can download it by directly opening the download address list page, which costs a lot of money Resources but cannot bring users.

After research, I finally solved the problem of anti-leeching for software channel downloads. The code is distributed and shared with everyone. I hope it can be used.

The modified function is

If the software information The page address is: https://www.xxx.net/soft/1.htm

The download address link is: https://www.xxx.net/plus/download.php?.... .....

Determine the origin,

If it is not https://www.xxx.net/soft/1.htm,

Jump directly to https ://www.xxx.net/soft/1.htm

If the source is https://www.xxx.net/soft/1.htm, the download address will be displayed

Description Next: The code below is directly copied from my own site. I have enabled Thunder download for the whole site. When I open it, Thunder download will be automatically used. You can also make small modifications to prevent the use of Thunder download

No It is easy to modify using Xunlei: delete the Xunlei related code and just quote $link

The file that needs to be modified is /plus/download.php

Demo:

https://www.xxx.net/do/plus/download.php?open=0&aid=20975&cid=3

Must start from https://www.xxx.net/codes/20975.html It is normal to enter the page.

The code is as follows:

<script src="http://pstatic.xunlei.com/js/webThunderDetect.js"></script> 
<?php require("encode.inc"); ?> 
<?php 
require_once(dirname(__FILE__)."/../include/config_base.php"); 
require_once(dirname(__FILE__)."/../include/inc_channel_unit.php"); 
if(!isset($open)) $open = 0; 
if(!isset($aid)) $aid = ""; 
$dsql = new DedeSql(false); 
//读取文档基本信息 
$arctitle = ""; 
$arcurl = ""; 
$gquery = "Select 
dede_archives.title,dede_archives.senddate,dede_archives.arcrank, 
dede_archives.ismake,dede_archives.typeid,dede_archives.channel,dede_archives.money, 
dede_arctype.typedir,dede_arctype.namerule 
From dede_archives 
left join dede_arctype on dede_arctype.ID=dede_archives.typeid 
where dede_archives.ID=&#39;$aid&#39; 
"; 
$arcRow = $dsql->GetOne($gquery); 
if(is_array($arcRow)){ 
$arctitle = $arcRow[&#39;title&#39;]; 
$arcurl = GetFileUrl($aid,$arcRow[&#39;typeid&#39;],$arcRow[&#39;senddate&#39;],$arctitle,$arcRow[&#39;ismake&#39;],$arcRow[&#39;arcrank&#39;],$arcRow[&#39;namerule&#39;],$arcRow[&#39;typedir&#39;],$arcRow[&#39;money&#39;]); 
}else{ 
$dsql->Close(); 
ShowMsg("无法获取未知文档的信息!","-1"); 
exit(); 
} 
$cu = new ChannelUnit($arcRow[&#39;channel&#39;],$aid); 
if(!is_array($cu->ChannelFields)) { 
$cu->Close(); 
$dsql->Close(); 
ShowMsg("获取文档链接信息失败!","-1"); 
exit(); 
} 
$vname = ""; 
foreach($cu->ChannelFields as $k=>$v){ 
if($v[&#39;type&#39;]=="softlinks"){ $vname=$k; break; } 
} 
if(!is_array($cu->ChannelFields)) { 
$cu->Close(); 
$dsql->Close(); 
ShowMsg("获取文档链接信息失败!","-1"); 
exit(); 
} 
if(!strstr($_SERVER[&#39;HTTP_REFERER&#39;],$arcurl)) 
{ 
echo "<script language=&#39;javascript&#39;>location=\"$arcurl\";</script>"; 
} 
$row = $dsql->GetOne("Select $vname From ".$cu->ChannelInfos[&#39;addtable&#39;]." where aid=&#39;$aid&#39;"); 
$downlinks = $cu->GetAddLinks($row[$vname]); 
$dsql->Close(); 
$cu->Close(); 
$link = base64_decode($link); 
$thunderUrl = ThunderEncode($link); 
echo "<script>OnDownloadClick(&#39;".$thunderUrl."&#39;,&#39;&#39;,location.href,&#39;07231&#39;,2,&#39;&#39;)</script>"; 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title><?php echo $arctitle?>下载地址列表</title> 
<link href="../templets/style/dede.css" rel="stylesheet" type="text/css" /> 
<link href="../templets/style/spage.css" rel="stylesheet" type="text/css" /> 
</head> 
</head> 
<body> 
<center> 
<div> 
<span>下载</span> 
<span><a href="/" _fcksavedurl="/">返回主页</a></span></div> 
<div> 
<div> 
<div>软件名称:<a href=&#39;<?php echo $arcurl?>&#39; _fcksavedurl=&#39;<?php echo $arcurl?>&#39; style=&#39;font-size:11pt&#39;><?php echo $arctitle?></a></div> 
</div> 
<div class=""> 
<div> 
<div>

Download address list:

<div><a href=&#39;<?php echo $thunderUrl?>&#39; _fcksavedurl=&#39;<?php echo $thunderUrl?>&#39; style=&#39;font-size:11pt&#39;>点这里右键使用迅雷下载-><?php echo $arctitle?></a></div> 
</div> 
</div> 
</div> 
</div> 
</center> 
</body> 
</html>

Supplement:

1. The anti-leeching function of this software channel must be in the software Set the

link display method in the channel settings: Request to enter the download address list page

2. If the example situation is different from your website, you can also manually modify your /plus/download .php

The modification method is as follows:

Find:

$row = $dsql->GetOne("Select $vname From ".$cu->ChannelInfos[&#39;addtable&#39;]." where aid=&#39;$aid&#39;");

Add

if(!strstr($_SERVER[&#39;HTTP_REFERER&#39;],$arcurl)) 
{ 
echo "<script language=&#39;javascript&#39;>location=\"$arcurl\";</script>"; 
}

above it and that’s it.

The above is the detailed content of How to prevent hotlinking in dedecms software download channel. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn