我有2种存储页面的方法。第一个很简单,将其存储在一个文件中。第二个是将它存储在我遇到问题的数据库中。
整个“系统”基于一个“引擎”,它通过将页面注入HTML模板来输出页面。简单来说:代码必须在到达引擎之前执行。希望这会使一些代码更有意义。
page.class.php执行存储在数据库中的PHP代码
...
// Page was found in the database
$this->name = $pageVariables['name'];
$this->requiredAuth = $pageVariables['requiredAuth'];
if ($parsed) {
ob_start();
echo $pageVariables['content'];
$this->contents = ob_get_clean();
var_dump($this->contents);
} else {
$this->contents = $pageVariables['content'];
}
...
// File exists on the system, load it
$fileContents = file_get_contents($this->url);
if ($parsed) {
ob_start();
include($this->url);
$this->contents = ob_get_clean();
var_dump($this-contents);
if (isset($pageName)) {
$this->name = $pageName;
}
if (isset($requiredAuth)) {
$this->requiredAuth = $requiredAuth;
}
if (isset($useEngine)) {
$this->useEngine = $useEngine;
}
} else {
$this->contents = $fileContents;
}
的if ($parsed) {...}
有如此的页面可以获取的未解析进行编辑。
显然这是一个减少版本,但我希望显示足够。
如果我从数据库中加载一个页面的代码
Hello World<br>
<?php echo 'Hello World'; ?>
输出我得到的是
Hello World<br>
<?php echo 'Hello World'; ?>
然而,存储在文件输出
Hello World
Hello World
我相同的代码尝试使用eval(),但这只会评估PHP代码,并且在包含HTML/PHP混合时失败。
也许有更好的方法来解决这个问题(存储它,执行等),但这是我目前看到的问题。
就我所知,'eval'适用于HTML/PHP。 –