2012-07-03 37 views
0

原諒初學者的問題 - 我試圖使用其他命令從SQL數據庫中調用PHP命令,但是網頁顯示的是純文本命令。來自SQL數據庫的PHP字符串顯示爲純文本

例如,我在頁面上的命令是<?php echo $row_rsLeftColumn['code']; ?>,並且在SQL數據庫中調用此項目:<?php echo '<p>Hello World</p>'; ?>。但是,即使我可以在源代碼中看到該行,網頁也不會顯示「Hello World」 - 因此,該行已成功從SQL數據庫中提取出來,該頁面僅將其視爲純文本。

當我直接將該行添加到網頁中時,它按預期工作,所以麻煩似乎並不是PHP在Web服務器上配置錯誤;相反,當頁面從SQL數據庫調用它時,頁面不會識別PHP,即使它直接在頁面上識別它。

任何援助,你可以提供將不勝感激。

+0

我很高興它沒有....認爲的安全問題,你可能有其他方式..搜索PHP命令'eval' – Rufinus

+3

幾乎總是一個壞主意來存儲在數據庫 – 2012-07-03 20:12:22

+0

PHP不將PHP或HTML存儲在數據庫中 – Don

回答

0

如果您希望提取並執行數據庫中的PHP代碼,則需要使用eval()來運行它。

eval請小心,因爲它不會對代碼執行任何檢查,所以如果最終用戶可以輸入代碼,他們可以編寫他們想要的任何惡意代碼。如果必須,請在使用前仔細閱讀eval上的文檔。並且請注意,在調用eval之前,您必須從代碼中移除<?php ?>標籤。

+1

我會強調「...... [**不會阻止**] **惡意代碼** ..」;我不信任任何*我的用戶 - 允許*他們的代碼*在*我的安全主管*下運行 - 並且我建議其他人也採用類似的觀點。 – 2012-07-03 20:18:48

0

它以字符串形式出現在數據庫中。現在你正在把它拉出來,並告訴它回聲。你應該使用eval()函數。

<?php eval($row_rsLeftColumn['code']); ?> 
+0

但是,我會**不推薦/使用這種方法。通常有*更清潔的方法,並且使用這種'eval'方法,取決於數據源和安全性,可以允許注入惡意代碼。 – 2012-07-03 20:22:35

+0

感謝大家的回答。我試圖 - 也許誤導了 - 從SQL數據庫中調用HTML和PHP的組合 - 同一頁面的其他區域僅調用數據庫中的HTML,但這是一個需要調用PHP行的特定實例爲第三方插件。 從SQL數據庫裏的代碼是這樣的:? ''

Hello World

'; ?>
我想''並收到'語法錯誤:語法錯誤,意外'<''。 再次,我感謝任何幫助。 – user1499837

0

對不起,我不能在還沒有評論回覆...

eval()預計PHP代碼,因此,如果你的字符串與HTML開始,你將需要?>加前綴。

<?php eval('?>' . $row_rsLeftColumn['code']); ?> 
+1

現在工作正常 - 謝謝!但是我擔心eval()可能導致安全問題的建議。在這部分網站中沒有外部用戶輸入 - 它只是調用我們內部數據庫提供的PHP記錄。有沒有比eval()更應該使用「更安全」的命令,或者這樣可以嗎? – user1499837

相關問題