2009-12-13 66 views
1

我有一個基本的cms存儲在mysql數據庫的表中的頁面 - 是否有可能在頁面中包含PHP,然後讓PHP處理它,而不是像原樣輸出它?在一個數據庫中處理PHP

回答

1

我認爲你必須使用eval()來做這樣的事情。所以是的,可能但不推薦。

+0

我能問這個安全問題會是什麼? (我是唯一一個可以將內容添加到數據庫的人,我通過phpmyadmin執行此操作) – 2009-12-13 19:07:23

+0

我想你會遇到更多性能問題,而不是安全問題。 eval()非常昂貴,因爲PHP必須爲eval()的每個調用產生另一個解釋器。 – 2009-12-13 19:08:52

+0

嗯,謝謝你:) – 2009-12-13 19:10:08

1

由於這兩個建議都表示,使用eval()不建議和帶來了嚴重的安全問題。

最好的辦法是創建一個基本的模板系統。您可以在前端有一組預先確定的PHP代碼塊,這些代碼塊由後端的某些關鍵值觸發,即{show_categories}可能是一個標籤,在解析時會被所有類別替換。

要實現這樣的功能,您必須搜索特定的模板鍵值。如果找到任何此類鍵值,請使用該鍵值運行相關的代碼,並用代碼替換該鍵。

查找和替換模板關鍵的一個非常簡單的例子:

// check if the show_categories key is found 
if (strpos($body, '{show_categories}') !== false) { 
    // generate the show categories output from a PHP function 
    $categories = getCategoriesOutput(); 
    // replace key with content 
    str_replace('{show_categories}', $categories, $body); 
} 
+0

+1:Smarty或Phable將是一個選項 – 2009-12-13 19:20:01