You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何正确显示存储在MySQL中的HTML+PHP混合代码

问题原因

你当前直接通过print输出数据库中读取的内容时,PHP解释器仅会解析当前PHP文件内的原生代码,不会处理字符串内容中包裹的<?php ?>标签,这些标签会原样输出到浏览器,浏览器无法识别<??>格式的标签,会自动将其转换为注释内容,最终导致页面布局错乱。

方案1:快速实现(仅适合内容完全可控的场景)

可以用eval()函数让PHP解析字符串中的PHP代码,修改page.php中输出内容的代码即可:

<div id="row">
    <?php
        // 拼接?> 是为了退出当前PHP解析模式,让eval识别字符串中的<?php标签
        eval('?>' . $page['page_content']);
    ?>
</div>

风险警告:eval()会执行传入内容中的所有PHP代码,如果你的CMS存在用户可编辑内容的入口,恶意用户可以提交恶意代码直接控制服务器,该方案仅可用于存储内容100%由你自己可控、无第三方用户输入的场景。

方案2:CMS系统规范实现方案(推荐)

主流CMS都不会直接存储可执行的PHP代码,而是采用自定义模板标签替换的方案,完全规避代码注入风险:

  1. 把存储在MySQL中的动态逻辑部分改成自定义短标签,比如原PHP代码可以改成:
<h3>MY HEADER TEXT</h3>
{if $sp_msg}
<div>{$sp_msg}</div>
{/if}
<hr>
<p>paragraph text</p>
  1. 写一个简单的标签解析函数,输出内容前遍历替换这些自定义标签为实际内容,不需要执行任何PHP代码,安全性高,扩展性强,后续可以自行扩展更多标签支持其他动态逻辑。

内容的提问来源于stack exchange,提问作者ToddN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:06:00