我有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。 –