thinkphp把HTML+PHP写的一个页面代码存入数据库以后 读取出来的效果HTML代码解析了PHP代码被直接输出

2024-10-28 09:26:50
推荐回答(3个)
回答1:

你将是变量的值存放到数据库,取出来的时候系统是无法识别的。你只能存放没有动态数据的代码到数据库。至于这个解决的办法:要么你不要把代码存放到数据库,如果一定要存放到数据库,反正动态数据的代码存放进去是无法识别出来的,你可以将代码分成几个部分存进去,读取出来,然后动态数据的代码再单独写,不过会比较麻烦。
这个不仅仅是thinkphp,任何一个框架,你存放动态的数据进去,都是无法识别的

回答2:

用Widget,渲染输出是可以做到的.
在Lib/Widget/下新建一个文件命名为TestWidget.class.php文件:
代码
class TestWidget extends Widget{

public function render($data) {
return $this->renderFile("test_page",$data);
}
}
在Lib/Widget/Test/下新建一个文件test_page.html把你上面从数据库中读的代码放入test_page.html中。
然后在其它模板中这样调用{:W('Test',array())}
这只是一个基本例子。具体项目中你可以把你从数据库读出的代码动态保存入Lib/Widget/Test/test_page.html中。在调用 return $this->renderFile("test_page",$data);

回答3:

thinkphp里面有不解析的代码

可以使用 literal 标签来防止模板标签被览枂,例如:

value1
value2
value3


上面癿 if 标签被 literal 标签包含,因此 if 标签里面癿内容开丌会被模板引擎览枂,而是保持原样输
出。
如果佝癿 php 标签中需要输出类似{$user} 戒者 XML 标签癿情冴,可以通过添
加 literal 标签览决混淆问题,例如:
echo '{$Think.config.CUSTOM.'.$key.'}';
返个 php 标签中癿{$Think 可能会被模板引擎诣当做标签览枂,览决癿办法就是加上 literal,例如:
echo '{$Think.config.CUSTOM.'.$key.'}';
Literal 标签迓可以用亍页面癿 JS 代码外层,确保 JS 代码中癿某些用法和模板引擎丌产生混淆。
总乀,所有可能和内置模板引擎癿览枂觃则冲突癿地方都可以使用 literal 标签处理。