浏览器不解释php代码
我在使用以下配置构建的简单cms中使用ckeditor浏览器不解释php代码,php,Php,我在使用以下配置构建的简单cms中使用ckeditor <script> if ($("#editor").length) { CKEDITOR.replace('editor', { language: 'en', allowedContent: true, }); CKEDITOR.config.protectedSource.push(/<\?[\s\S]*?\?>/
<script>
if ($("#editor").length) {
CKEDITOR.replace('editor', {
language: 'en',
allowedContent: true,
});
CKEDITOR.config.protectedSource.push(/<\?[\s\S]*?\?>/g);
}
</script>
如果($(“#编辑器”).length){
CKEDITOR.replace('editor'{
语言:"en",,
允许内容:正确,
});
CKEDITOR.config.protectedSource.push(//g);
}
如果转到编辑器上的“源代码”选项卡并键入以下php代码,效果会非常好:
<?php echo "hello"; ?>
...modules\pages\views\base.php:38:string '<?php echo "hola"; ?>' (length=21)
它以
到目前为止一切正常
现在我的问题是,当从数据库中获取并在浏览器上显示它时,它不会出现
我对包含代码的变量进行了var_转储,我看到了以下内容:
<?php echo "hello"; ?>
...modules\pages\views\base.php:38:string '<?php echo "hola"; ?>' (length=21)
…modules\pages\views\base.php:38:string“”(长度=21)
所以这个值确实存在,并且它到达了视图,我不理解为什么它没有显示在页面上
该页面是template.php
如果我看一下源代码,我的php代码正在被注释
这就是我试图显示代码的方式
如果我这样做
<div class="article-content-container">
<?php echo $this->security->xss_clean($content); ?>
</div>
它显示为
<div class="article-content-container">
<?php echo "hola"; ?><!--?php echo "hola"; ?-->
</div>
php回声“hola”?
如果我表现得像这样
<div class="article-content-container">
<?php echo $content; ?>
</div>
它会被评论
我希望我是清楚的,任何帮助都会被感激的
谢谢大家-如果不在数据库中保存php标记,可以使用eval()运行保存的代码:
eval($this->security->xss_clean($content));
仅当保存的位未被
编辑:让人们从数据库中运行代码,甚至在数据库中保存代码都是一个潜在的风险。它可以被利用 浏览器不解释PHP代码,他们对PHP代码一无所知。他们从来没有,也永远不会。PHP代码在服务器上执行;从那里,它会产生一些输出,这些输出会回显到客户端的浏览器,通常是HTML,但也可以是CSS或JavaScript、图像或其他可下载的文件 如果输出PHP代码,访问者最多只能手动将其保存到本地文件中,安装自己的PHP软件,并在该文件中运行。无论你做什么,它都不会在浏览器中神奇地运行 如果您想在浏览器中运行一些代码,它必须是JavaScript。如果要在服务器上运行一些PHP代码,请不要
echo
it,它:
请注意,eval
将其输入视为已经有一个PHP打开标记,因此您将传递echo“hello”代码>而不是
。如果需要,您仍然可以在评估代码中使用?>
,以返回HTML+PHP模式
PHP或JavaScript代码都可能被设计成恶意代码,因此在您的网站上提交任何要执行的标记或代码都必须被视为特权操作。您必须确保不允许任何未经验证的网站管理员执行此操作。如果你真的需要让随机的人来运行这些代码,有一些方法可以对它们进行沙箱处理或净化,但这更复杂。CodeIgniter的xss_clean
,当然不是为安全地执行用户提交的代码而设计的,尽管它会损坏代码并使编写变得烦人
一般而言:
- 如果需要执行提交的PHP,那么使用
eval($content)代码>
- 如果您需要输出提交的HTML,其中可能包括可执行JavaScript,则使用
echo$content代码>
- 如果您需要输出提交的纯文本(这是允许用户输入通常是安全的唯一形式),则使用
echo-htmlspecialchars($content)代码>
浏览器不运行php服务器,因为字符串的输出完全符合要求。就浏览器而言,PHP代码只是一个字符串。不期望web浏览器对其执行任何操作。请注意,允许用户输入PHP代码,这些代码将在具有潜在提升权限的服务器上执行会带来一定的风险。谢谢,我确实编辑了我的帖子。这确实是一个潜在的安全风险。