PHP 标签 Php(禁用)

PHP 标签 Php(禁用)

DouView 禁止在模板中嵌入原生 PHP 代码。这是一条硬性安全约束:模板只负责展示,不承接任意代码执行。

一、{php} 编译期拒绝

{php} echo "hi"; {/php}   {* 编译期直接报错 *}

PhpTagCompiler 在编译期无条件抛错:php tags not permitted。也就是说,只要模板里出现 {php},该模板就无法编译,不存在「运行期才出错」的侥幸。

二、文本中的 PHP 起止符自动转义

模板文本里出现的 <?、?>、language=php 等片段也会被自动转义为字面输出,不会被 PHP 解析执行,从根本上杜绝了通过模板注入原生 PHP 的可能。

三、为什么禁用

  • 安全:允许模板内嵌 PHP 等于允许任意代码执行,一旦模板可被不可信来源修改,就是严重的 RCE 风险;
  • 职责分离:业务逻辑应在控制器 / 服务层,模板只做展示;
  • 可缓存 / 可预测:无副作用的模板才能安全地编译缓存。

四、替代方案

需要在模板里做的「计算 / 逻辑」,用引擎提供的能力替代:

  • 条件与循环:{if} / {foreach} / {list} / {category};
  • 数据处理:修饰器链(见「变量修饰器 Modifiers」篇);
  • 复杂装配:放到控制器或主题的 inc/..from_theme.php(见「主题数据装配 Portal」篇),处理成数组再注入模板。
添加日期: