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='$aid' "; $arcRow = $dsql->GetOne($gquery); if(is_array($arcRow)){ $arctitle = $arcRow['title']; $arcurl = GetFileUrl($aid,$arcRow['typeid'],$arcRow['senddate'],$arctitle,$arcRow['ismake'],$arcRow['arcrank'],$arcRow['namerule'],$arcRow['typedir'],$arcRow['money']); }else{ $dsql->Close(); ShowMsg("无法获取未知文档的信息!","-1"); exit(); } $cu = new ChannelUnit($arcRow['channel'],$aid); if(!is_array($cu->ChannelFields)) { $cu->Close(); $dsql->Close(); ShowMsg("获取文档链接信息失败!","-1"); exit(); } $vname = ""; foreach($cu->ChannelFields as $k=>$v){ if($v['type']=="softlinks"){ $vname=$k; break; } } if(!is_array($cu->ChannelFields)) { $cu->Close(); $dsql->Close(); ShowMsg("获取文档链接信息失败!","-1"); exit(); } if(!strstr($_SERVER['HTTP_REFERER'],$arcurl)) { echo "<script language='javascript'>location=\"$arcurl\";</script>"; } $row = $dsql->GetOne("Select $vname From ".$cu->ChannelInfos['addtable']." where aid='$aid'"); $downlinks = $cu->GetAddLinks($row[$vname]); $dsql->Close(); $cu->Close(); $link = base64_decode($link); $thunderUrl = ThunderEncode($link); echo "<script>OnDownloadClick('".$thunderUrl."','',location.href,'07231',2,'')</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='<?php echo $arcurl?>' _fcksavedurl='<?php echo $arcurl?>' style='font-size:11pt'><?php echo $arctitle?></a></div> </div> <div class=""> <div> <div>
Download address list:
<div><a href='<?php echo $thunderUrl?>' _fcksavedurl='<?php echo $thunderUrl?>' style='font-size:11pt'>点这里右键使用迅雷下载-><?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['addtable']." where aid='$aid'");
Add
if(!strstr($_SERVER['HTTP_REFERER'],$arcurl)) { echo "<script language='javascript'>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!