找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2409|回复: 0

[分享] Discuz!开发之附件动态链接生成与解析

[复制链接]
发表于 2017-11-15 08:11:15 | 显示全部楼层 |阅读模式 来自 河南省新乡市
熟悉discuz!的朋友应该知道,discuz!的附件在前台显示的都是动态的下载链接,例如:
http://localhost/forum.php?mod=attachment&aid=MTc2NTF8OTVkOTMyODB8MTQ5MTk4MDg1MHwxfDMyMQ%3D%3D
从上面我们看到,参数aid并不是附件表中的aid,难道此次有加密?
我们来研究一下这个aid参数的生成方法:
\source\function\function_core.php
  1. function aidencode($aid, $type = 0, $tid = 0) {  
  2.     global $_G;  
  3.     $s = !$type ? $aid.'|'.substr(md5($aid.md5($_G['config']['security']['authkey']).TIMES**P.$_G['uid']), 0, 8).'|'.TIMES**P.'|'.$_G['uid'].'|'.$tid : $aid.'|'.md5($aid.md5($_G['config']['security']['authkey']).TIMES**P).'|'.TIMES**P;  
  4.     return rawurlencode(base64_encode($s));  
  5. }  
复制代码
上面链接中的aid参数就是把该附件的aid、论坛安全码、时间、我的ID号、主题ID等信息字符串拼接之后使用了base64加密而来,因此我们的就很容易解析这个aid参数,可参考:
\source\module\forum\forum_attachment.php
  1. @list($_GET['aid'], $_GET['k'], $_GET['t'], $_GET['uid'], $_GET['tableid']) = daddslashes(explode('|', base64_decode($_GET['aid'])));
复制代码


发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

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

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-5-12 04:41 , Processed in 0.201993 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表