2011-11-16 70 views
1

我在一個mySQL表中存儲單個頁面上顯示的單個幻燈片的HTML/PHP內容。PHP/mySQL:我如何檢索存儲在mySQL表中的HTML/PHP代碼,但沒有PHP註釋掉?

這裏是存儲在MySQL表的HTML/PHP代碼示例:

<p>Welcome <?php echo $userData['fname']; ?>!</p> 

<p>You made it to the first slide!</p> 

我檢索PHP的幻燈片用下面的代碼內容:

<?php 

$fetchedPageSlideData = mysql_query("SELECT * FROM pageSlides WHERE pageID = $pageID ORDER BY 'order' DESC") or die(mysql_error()); 

    while ($pageSlideData = mysql_fetch_array($fetchedPageSlideData)) { 

     $pageSlideContent = $pageSlideData['content']; ?> 

     <div><?php echo $pageSlideContent; ?></div> 

    <?php } 

?> 

所有的內容的HTML顯示正確,但PHP插入如下:

<!--?php echo $userData['fname']; ?--> 

所以PHP是commen結果並不顯示。

如何檢索HTML/PHP代碼並讓PHP未被註釋掉?

+0

與已插入到輸出HTML中的代碼相關的數據庫的內容是什麼? – Tadeck

+3

在數據庫中插入PHP代碼是牀實踐 –

+0

@ShaktiSingh:這取決於具體情況。但是,在這種情況下,**可能會不正確。 – Tadeck

回答

2

這可能是一個更好的主意在DB數據使用佔位符字符串。從DB執行任意的PHP代碼可能是危險的。 PHP is Evil

+0

謝謝!我正在研究佔位符字符串的使用。這可能會完成我想要做的事情。再次感謝。 –

+0

一個好地方開始: http://stackoverflow.com/questions/828645/how-to-replace-a-variable-within-a-string-with-php – Cooly

0

放入和退出PHP解釋器會讓您的代碼難以閱讀。考慮:

<?php 
    $f = mysql_query(
     "SELECT * 
     FROM pageSlides 
     WHERE pageID = $pageID 
     ORDER BY 'order' DESC" 
    ) or die(mysql_error()); 

    while ($d = mysql_fetch_array($f)) { 
     print "<div>" . $d['content'] . "</div>\n"; 
    } 

無論在這裏沒有隱式的或顯式的機制,它會注入您提出的評論標籤。然而,它可能是瀏覽器嘗試瞭解未轉義的 html代碼和<?php ...? >標籤。

嘗試:

print "<div>" . htmlentities($d['content']) . "</div>\n"; 

作爲一個側面說明,你可能會考慮使用

print "<div>" . highlight_string($d['content']) . "</div>\n"; 

還是你的意思是,你實際上要運行存儲在數據庫中的代碼 - 如果是這樣,你正在尋求一個痛苦的世界。 Eval是不是邪惡 - 但你真的必須知道你在做什麼以避免被它咬傷。