这是否可以使用Zend Framework和CKEditor

时间:2012-02-20 17:57:00

标签: zend-framework

希望有人可以帮助我,我将php存储在我的数据库中存储为文本字段的表中:

<?php
    echo "this is a test";
?>

我将这个内容从数据库中拉出来,使用控制器的preDispatch函数中的以下命令进行渲染: -

<?php
    class Ajfit_Controller_View_Action extends Zend_Controller_Action {

         public function preDispatch()
         {
            parent::preDispatch();

            $this->getResponse()->setBody($page->getContent());
         }
    }
?>

我的问题是,当我从数据库中呈现内容时,页面只显示php的文本并且不执行它,我正在做什么甚至可能?

由于

安德鲁

3 个答案:

答案 0 :(得分:2)

你需要使用eval($ phpcode)才能工作。如果您从不值得信任的来源接受这一点,那将是一种安全风险。

您还必须添加:

$this->_helper->viewRenderer->setNoRender();

以便ZF不会尝试渲染视图。

如果你决定使用eval(),你可能想要这样做:

ob_start();
eval(preg_replace("/^<\?(php)?(.*)\?>$/", '$2', $page->getContent()));
$body = ob_get_clean();
$this->getResponse()->setBody($body);

您不能将eval'd内容包含在打开/关闭PHP标记中,因此preg_replace。

答案 1 :(得分:1)

您必须通过PHP的eval函数运行它,但这有巨大的潜在的安全问题。

答案 2 :(得分:0)

请不要像这样构建您的应用程序。如果您需要在多个地方使用您的代码,请查看类似rsync的内容:

http://en.wikipedia.org/wiki/Rsync