网络建站知识发布于分享网站

当前位置:首页>>新闻中心>>CMS教程>>dedecms教程

Dedecms软件下载频道防盗链PHP代码实现

时间:2025-03-30 11:07:21    来源:    人气:0

在使用Dedecms作为软件下载站点时,可能会遇到一些问题。例如,当其他网站转载您的下载链接时,直接指向`http://www.xxx.com/plus/download.php...`这样的地址,不仅会耗费服务器资源,还无法为您的网站带来流量。为了防止这种情况发生,可以通过修改代码实现防盗链功能。 ### 防盗链功能的实现 改后的功能如下: - 假设软件信息页地址为`/soft/1.htm`。 - 下载地址连接为`/plus/download.php?...`。 - 系统将判断访问来源: - 如果不是从`/soft/1.htm`进入,则直接跳转到`/soft/1.htm`。 - 如果是从`/soft/1.htm`进入,则正常展示下载地址。 以下是如何实现这一功能的详细步骤:


<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>
<body>
<center>
<div class="stop">
<span class="toptitle">下载</span>
<span class="toplink"><a href="/">返回主页</a></span></div>
<div class="smain">
<div class="mtitle">
<div class="mtname">软件名称:<a href='<?php echo $arcurl?>' style='font-size:11pt'><?php echo $arctitle?></a></div>
</div>
<div class="">
<div class="svote">
<div class="vtinfo">
下载地址列表:
<div class="vtbox"><a href='<?php echo $thunderUrl?>' style='font-size:11pt'>点这里右键使用迅雷下载-><?php echo $arctitle?></a></div>
</div>
</div>
</div>
</div>
</center>
</body>
</html>

### 注意事项 1. **软件频道设置** 在Dedecms后台的软件频道设置中,需要将“链接显示方式”设置为“要求进入下载地址列表页”。 2. **手动修改`download.php`** 如果上述情况与您的实际需求不符,可以手动修改`/plus/download.php`文件。具体方法如下: 找到以下代码段: `
` `$row = $dsql->GetOne("Select $vname From ".$cu->ChannelInfos['addtable']." where aid='$aid'");` `
` 在其上方添加以下代码: `
` `if(!strstr($_SERVER['HTTP_REFERER'],$arcurl)) {` ` echo "";` `}` `
` 通过以上步骤,您可以有效防止他人直接转载您的下载链接,从而保护您的服务器资源和流量。希望这些信息对您有所帮助!

相关文章

  • Dedecms 删除文档时同时清除文章中图片的方法

    Dedecms 删除文档时同时清除文章中图片的方法

    在网站建设与维护的过程中,优化代码结构和功能是提升网站性能的重要步骤。本文将介绍如何通过自定义函数实现文章删除时自动清理相关资源的功能,从而提高系统的整洁性和存储效率。以下是具体的操作步骤及代码实现。首先, 在 `/include` 目录下创建一个名为 `extend.func.php` 的文件...
    2025-03-31
  • Dedecms上传图片提示302错误ERROR的解决方法

    Dedecms上传图片提示302错误ERROR的解决方法

    在进行图片上传操作时,用户可能会遇到302错误以及带有ERROR提示的图片上传失败问题。这些问题可能由多种原因引发,因此本文将对这些情况进行整理,以帮助大家更有效地定位并解决问题。 第一种情况:图片文件本身损坏。 这种情况会导致系统返回ERROR错误提示,不过发生概率较低。如果怀疑是图片损坏导致的...
    2025-03-31
  • DEDECMS模板使用教程

    DEDECMS模板使用教程

    如果您正在寻找一种高效的方法来使用Dedecms模板搭建网站或论坛,那么本文将为您提供详尽的指导。从模板解压到最终完成配置,每一步都将清晰呈现,帮助您快速掌握整个流程。 第一步:解压Dedecms模板 将下载的Dedecms模板文件解压出来,确保所有文件完整无误。如下图所示: 第二步:获取D...
    2025-03-31
  • Dedecms Dede 附加表自定义字段与主表文章关联方法

    Dedecms Dede 附加表自定义字段与主表文章关联方法

    在使用DedeCMS开发装修网站时,设计师和设计作品之间的关联是一个重要的功能需求。通常情况下,文章(作品)的内容部分存储在主表dede_addonarticle中,而自定义字段则存储在附加表dede_archives中。为了实现这一功能,可以采用以下两种方法。 ① 根据发布人调用相关文章; ...
    2025-03-31

公众号