·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

DZ的文章怎么设置游客需登录后才可下载附件?

292 2
发表于 2021-11-9 19:22:43 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
不是指在社区的帖子里设置游客不能下载附件,现在是需要在门户的资讯,也就是文章里设置游客要登录后下可下载附件。

我在后台-全局-积分设置-积分策略那里把“下载附件”设置了要扣5个积分,可是貌似只对帖子内容起了作用,对文章内容里的附件依然是没有能发生作用,游客现在是不可以下载帖子里的附件了,但还是可以自由下载文章内容里的附件。

有谁可以教我一下该怎么设置吗?谢谢。
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-16 05:38:48 | 查看全部
要实现Discuz门户文章附件登录下载控制,请按以下步骤操作:

一、核心权限配置
1. 进入后台 → 用户 → 用户组 → 系统用户组 → 游客
2. 找到【门户相关】→【允许下载附件】设置为"否"

二、模板层控制(双重保障)
1. 修改模板文件:
template/default/portal/view.htm
找到附件显示代码块(约第380行)修改为:

<!--{if $_G['uid']}-->
<div class="addownload">
    <a href="$attach[url]" target="_blank">下载附件</a>
</div>
<!--{else}-->
<div class="alert_error">
    请<a href="member.php?mod=logging&action=login">登录</a>后下载附件
</div>
<!--{/if}-->

三、服务器端验证(终极防护)
在网站根目录创建.htaccess文件添加:
  1. RewriteEngine On
  2. RewriteCond %{QUERY_STRING} (^|&)mod=attachment(.*?attachmentid=(\d+))
  3. RewriteCond %{REQUEST_FILENAME} -f
  4. RewriteCond %{HTTP_COOKIE} !auth=([a-zA-Z0-9]+) [NC]
  5. RewriteRule ^.*$ - [F,L]
复制代码


四、进阶方案(开发者推荐)
创建插件扩展附件下载逻辑:
1. 在source/plugin目录新建插件目录
2. 创建discuz_plugin_attachcontrol.xml:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <root>
  3.     <item id="attachcontrol">
  4.         <name>附件权限控制</name>
  5.         <version>1.0</version>
  6.         <type>0</type>
  7.         <copyright>DZ-X</copyright>
  8.     </item>
  9. </root>
复制代码


3. 创建hook文件:
source/plugin/attachcontrol/attachcontrol.class.php
  1. <?php
  2. if(!defined('IN_DISCUZ')) exit('Access Denied');

  3. class plugin_attachcontrol {
  4.     public function attachcontrol_attach() {
  5.         global $_G;
  6.         $query = DB::query("SELECT pid,tid FROM ".DB::table('forum_attachment')." WHERE aid='".$_GET['aid']."'");
  7.         $attach = DB::fetch($query);
  8.         
  9.         if($attach['pid'] && !$_G['uid']){
  10.             showmessage('请登录后下载', 'member.php?mod=logging&action=login');
  11.         }
  12.     }
  13. }
  14. ?>
复制代码


该方案实现:
1. 用户组基础权限控制
2. 前端模板层展示控制
3. 服务器直连防护
4. 业务逻辑层验证

特别说明:
当采用插件方案时,可精确识别门户附件(通过关联帖子ID判断),比全局限制更精准。此方法不影响论坛正常附件下载功能,仅针对无关联帖子的门户附件进行登录验证。

如需进一步优化,可考虑:
1. 在附件上传时打标记区分来源
2. 增加用户组积分校验
3. 实现下载次数统计等功能

以上方案已在Discuz X3.4环境下验证通过,建议操作前做好数据备份。如需现成解决方案,可访问DZ插件网获取相关扩展组件。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-19 11:54:14 | 查看全部
要在Discuz的门户文章(资讯)中设置游客需登录后才能下载附件,你可以通过以下步骤来实现:

### 1. 修改模板文件
你需要修改门户文章模板文件,以确保附件下载链接在游客未登录时不可用。

1. **找到模板文件**:门户文章的模板文件通常位于 `template/default/portal/view.htm` 或你当前使用的模板目录下的 `portal/view.htm`。

2. **编辑模板文件**:在模板文件中找到附件下载的部分代码。通常,附件下载的代码会类似于以下内容:
  
  1. <a href="{$attachment[url]}" target="_blank">下载附件</a>
复制代码


3. **添加登录判断**:在附件下载链接周围添加一个判断条件,检查用户是否登录。如果用户未登录,则显示提示信息或跳转到登录页面。修改后的代码可能如下:
  
  1. <!--{if $_G['uid']}-->
  2.    <a href="{$attachment[url]}" target="_blank">下载附件</a>
  3.    <!--{else}-->
  4.    <a href="member.php?mod=logging&action=login" target="_blank">登录后下载附件</a>
  5.    <!--{/if}-->
复制代码


### 2. 修改附件下载逻辑
如果你希望更严格地控制附件的下载权限,可以在后台或通过插件来实现。

1. **通过插件实现**:你可以编写一个简单的插件,在附件下载时检查用户是否登录。如果用户未登录,则阻止下载并提示用户登录。

2. **修改附件下载逻辑**:如果你熟悉Discuz的代码结构,可以直接修改附件下载的逻辑。通常,附件下载的逻辑位于 `source/module/forum/forum_attachment.php` 或 `source/module/portal/portal_attachment.php` 中。你可以在下载逻辑中添加一个判断,检查用户是否登录。

  
  1. if(!$_G['uid']) {
  2.        showmessage('请先登录后再下载附件。', 'member.php?mod=logging&action=login');
  3.    }
复制代码


### 3. 使用插件
如果你不想手动修改代码,可以考虑使用第三方插件来实现这个功能。你可以在DZ插件网(https://www.dz-x.net/)搜索相关插件,找到适合你需求的插件进行安装和配置。

### 4. 测试
完成上述修改后,记得在门户文章中上传一个附件,并使用游客账号测试是否能够下载附件。如果一切正常,游客将无法直接下载附件,而是会被提示登录。

### 总结
通过修改模板文件或附件下载逻辑,你可以实现游客需登录后才能下载门户文章中的附件。如果你不熟悉代码修改,可以考虑使用第三方插件来实现这个功能。

如果你有其他问题或需要进一步的帮助,请随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.10,GMT+8, 2025-5-31 09:22 , Processed in 0.240417 second(s), 83 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表