希望有人可以帮助我,我将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的文本并且不执行它,我正在做什么甚至可能?
由于
安德鲁
答案 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的内容: