2013-06-25 52 views
1

目前我正在一個項目中,我必須在數據庫中保存some PHP code,我將代碼保存爲PHP tags如何在數據庫中保存php代碼

但我沒有得到如何可以完全檢索存儲到數據庫中的代碼。

我曾嘗試以下方法:

a)直接檢索:當我直接檢索DATABSE然後$行[ '代碼']的值是空白

b)使用的eval() :當我使用的eval()然後我正在語法錯誤:

syntax error, unexpected '<' in H:\xampp\htdocs\trycodeonline\testing.php(27) : eval()'d code on line 1

c)使用的eval(),而不php標記:當我除去PHP的代碼然後我得到結果,而不是代碼,就像我想打印echo "hello"但它打印「你好」

那麼我該如何打印php代碼?

+8

不好的壞主意,請不要 – 2013-06-25 04:18:59

+1

哦,我現在明白他的想法。它基本上是一個代碼共享網站,像copepad。 –

+0

是的戴夫陳這就是像jsfiddle鍵盤 –

回答

0

如果你真的想這樣做,你可以使用eval()作爲方法C)表明:

$var // your variable with the data from the DB 
<?php echo eval("?>". $var ."<?") ?> 

有很多合法的使用情況,您我想要將PHP命令存儲在數據庫中,並且我個人發現在不知道情況有點幫助的情況下大喊「不要這樣做」。

無論如何,正如已經在各種線程中指出的那樣,存在使用這種方法的安全問題和其他陷阱,我會建議不要這樣做。它會使調試更加困難,並增加潛在的安全漏洞,等等。

閱讀this後和this後知道更多關於使用eval()的陷阱。

+0

也不理解PHP語法和第一個應用程序失敗的'eval'應該讓一個人有足夠的氣味去理解,以便在未來幾年保持手指直到完全確定它是如何工作的。 – hakre

1

將任何非字母數字字符轉換爲與HTML等效的字符(即將空格轉換爲 ),然後將其存儲在數據庫中。然後,您的查詢可以直接在視圖中使用木材。

+0

同意,你可能想使用htmlentities函數 – DavidLin

+0

抱歉試圖把'nbsp;'顯示爲真正的空白空間。但你有想法 –

2

highlight_string串正常工作

$str=highlight_string('<?php 
    echo "hello"; 
    ?>',true); 
    echo $str; 
+0

,但主要的事情我怎麼能從數據庫 –

+0

@lord_linus檢索到的PHP代碼保存到數據庫與mysql_real_escape_string和stripslashes後從數據庫中獲取... –

0

但我沒有得到我如何可以檢索完全存儲到數據庫中的代碼。

好吧,如果你不能夠做​​到這一點,請問一個數據庫問題(請您已經採取了PHP和數據庫編程課程後)。因爲除非這種方法有效,否則其他方面完全不同。