2010-06-30 66 views
0

我在管理我的web內容的數據庫。當你點擊一個certian頁面時,會對db進行查詢以返回該頁面的內容。 Usualy我只是將靜態HTML存儲爲一個字符串,當它從數據庫返回並放入網頁時,它會正確呈現。但是現在,其中一些內容實際上包含了php,並且在返回時,php將顯示爲文本。我查看了eval()函數,但似乎沒有爲我工作,或者我錯誤地使用它。從數據庫返回php並呈現代碼

這裏是和示例代碼的我:

mysql_select_db("default_DB1", $con); 

       $result = mysql_query("SELECT * FROM submenus WHERE active = '1' and menu_id='" . $_GET['article'] . "'"); 

    echo "<ul>\n"; 
       $counter = 1; 
       while($row = mysql_fetch_array($result)) 
       { 
         echo "<li><a href=\"#tabs-" . $counter . "\" onclick=\"storySize('tabs-" . $counter . "');\">" . $row['submenu_name'] . "</a></li>\n"; 
         $counter = $counter + 1;      
       } 
       echo "</ul>\n"; 

       $counter = 1; 
       $result2 = mysql_query("SELECT * FROM submenus WHERE active = '1' AND menu_id='" . $_GET['article'] . "'"); 
       while($row2 = mysql_fetch_array($result2)) 
       { 
         echo "<div id=\"tabs-" . $counter . "\" style=\"height:100%; overflow:visible;\">" . str_replace("*#*","'",$row2['submenu_content']) . "</div>\n";      
         $counter = $counter + 1; 
       } 

       mysql_close($con); 

然後返回的內容是:

<table width="100%"> 
<tr> 
<td align="right">Username: </td> 
<td align="left"><input type="text" id="txtUsername" name="txtUsername" value=""></td> 
</tr> 
<tr> 
<td align="right">Password: </td> 
<td align="left"><input type="text" id="txtPassword" name="txtPassword" value=""></td> 
</tr> 
<tr> 
<td>User Type</td><td><select id="ddlUserType" name="ddlUserType"> 

$con = mysql_connect("domain.com","username","pwd"); 
if (!$con) 
    { 
    die(#*#Could not connect: #*# . mysql_error()); 
    } 

mysql_select_db("default_DB1", $con); 

$result = mysql_query("SELECT * FROM user_types WHERE user_type_name <> #*#Admin#*# and active = #*#1#*#"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<option value=\"" . $row[#*#user_type_id#*#] . "\">" . $row[#*#user_type_name#*#] . "</option>"; 
    } 

mysql_close($con); 

</select></td> 
</tr> 
<tr> 
<td align="right"></td> 
<td align="left"><input type="button" id="txtReg" name="txtReg" value="Register" onclick="alert(*#*plaka*#*);"></td> 
</tr> 
</table> 
+0

'「SELECT * FROM submenus WHERE acti ve ='1'和menu_id ='「。 $ _GET ['article']。 「''」你應該真的重新考慮這一點,因爲這樣的代碼非常不安全並且很危險。 – DrColossos 2010-06-30 17:38:17

回答

2

首先,看eval。我懷疑它不起作用的原因是,eval期望代碼以php代碼開頭(意思是開頭<?php,所以它試圖以PHP的形式執行HTML。要解決這個問題,只需在?>之前加上代碼即可)到eval() ...

其次,這通常被認爲是非常糟糕的做法,它使它不那麼安全(因爲SQL注入漏洞實際上可能會影響服務器而不僅僅是數據)並且難以維護(因爲現在您的代碼生活在兩個地方)

我會高度建議尋找您的問題的另一種解決方案...

+1

我第二個這個。非常糟糕的主意。 – 2010-06-30 17:38:37

+0

很酷。感謝您的建議,我會研究另一種方法。 – 2010-06-30 17:45:49