我爱帮助网-手册QQ交流群

Nas交流与矿渣群(unraid 群晖 猫盘 蜗牛等):580680114         物联网/智能家居群:518812757             帮助教程:手册大全

软件使用与建站群:1057308983      虚拟化交流群:13448651

0

Discuz!附件动态链接是如何自动生成与解析的

Discuz!附件动态链接是如何自动生成与解析的,discuz!的附件在前台访问时显示的链接是动态变化的

与你登录的论坛 用户 时间都有关系。

显示的都是动态的下载链接,例如:

http://localhost/forum.php?mod=attachment&aid=MTc2NTF8OTVkOTMyODB8MTQ5MTk4MDg1MHwxfDMyMQ%3D%3D

从上面我们看到,参数aid并不是附件表中的aid,难道此次有加密?

我们来研究一下这个aid参数的生成方法:

/source/function/function_core.php

function aidencode($aid, $type = 0, $tid = 0) {	global $_G;	$s = !$type ? $aid.'|'.substr(md5($aid.md5($_G['config']['security']['authkey']).TIMESTAMP.$_G['uid']), 0, 8).'|'.TIMESTAMP.'|'.$_G['uid'].'|'.$tid : $aid.'|'.md5($aid.md5($_G['config']['security']['authkey']).TIMESTAMP).'|'.TIMESTAMP;	return rawurlencode(base64_encode($s));}
上面链接中的aid参数就是把该附件的aid、论坛安全码、时间、我的ID号、主题ID等信息字符串拼接之后使用了base64加密而来,因此我们的就很容易解析这个aid参数,可参考:

/source/module/forum/forum_attachment.php

@list($_GET['aid'], $_GET['k'], $_GET['t'], $_GET['uid'], $_GET['tableid']) = daddslashes(explode('|', base64_decode($_GET['aid'])));