马上注册,免费下载更多dz插件网资源。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
解决文库详情页显示HTML源码问题详细步骤问题现象在AI文库详情页(plugin.php?id=aieditor_7ree:library_7ree&option=1&tid=xxx)中,论坛手动发布的帖子内容显示为HTML源代码(如 <p>...),而不是正常渲染的格式化文本。 原因分析Discuz编辑器存储机制:用户通过论坛编辑器发布的帖子,其中的HTML标签会被实体编码存储(< 变为 <,> 变为 >),以防止XSS攻击。 插件未正确解码:文库详情页的PHP代码(page_7ree.php)在读取帖子内容后,直接传递给模板,没有将HTML实体解码还原。 模板引擎二次转义:Discuz模板引擎为安全考虑,会自动对变量输出进行转义,导致已解码的HTML再次变成实体。 游客与登录状态处理不一致:游客状态下会截取部分内容,截取前的处理流程与登录状态不同,导致游客看到的内容可能仍包含未解码的HTML。
解决步骤第1步:定位文件修改文件:source/plugin/aieditor_7ree/include/library_7ree/page_7ree.php 第2步:添加循环解码与反转义函数在文件末尾 ?> 之前添加以下清理危险CSS样式的函数(用于登录状态内容): php
function cleanDangerousCSS_7ree($content) { // 移除所有内联样式(包括HTML实体编码的样式) $content = preg_replace('/\s*style\s*=\s*"[^"]*"/i', '', $content); $content = preg_replace('/\s*style\s*=\s*"[^&]*"/i', '', $content); $content = preg_replace('/\s*style\s*=\s*'[^&]*'/i', '', $content); // 移除可能导致布局错乱的CSS属性 $content = preg_replace('/position\s*:\s*[^;"]+[;"]/i', '', $content); $content = preg_replace('/display\s*:\s*flex[^;"]*[;"]/i', '', $content); $content = preg_replace('/width\s*:\s*\d+px[;"]/i', '', $content); $content = preg_replace('/margin-left\s*:\s*-\d+px[;"]/i', '', $content); $content = preg_replace('/margin-right\s*:\s*-\d+px[;"]/i', '', $content); $content = preg_replace('/margin-top\s*:\s*-\d+px[;"]/i', '', $content); $content = preg_replace('/margin-bottom\s*:\s*-\d+px[;"]/i', '', $content); $content = preg_replace('/z-index\s*:\s*\d+[;"]/i', '', $content); $content = preg_replace('/float\s*:\s*[^;"]+[;"]/i', '', $content); $content = preg_replace('/<svg[^>]*>.*?<\/svg>/is', '', $content); $content = preg_replace('/<section[^>]*>\s*<\/section>/is', '', $content); $content = preg_replace('/<span[^>]*>\s*<\/span>/is', '', $content); return $content;}
©DZ插件网所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站内容为站长个人技术研究记录或网络,不提供用户交互功能,所有内容版权归原作者所有。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。 您在本站任何的赞助购买、下载、查阅、回复等行为等均表示接受并同意签订《DZ插件网免责声明协议》。 如有侵权请邮件与我们联系处理: discuzaddons@vip.qq.com 并出示相关证明以便删除。敬请谅解!
|