2010-06-30 2 views
0

Im gérer mon contenu Web un DB. Lorsque vous cliquez sur une page certian, une requête est envoyée à la base de données pour retourner le contenu de cette page. Habituellement je stocke juste le HTML statique comme chaîne et quand il est retourné de la DB et placé dans la page Web, il rend correctement. Mais maintenant, une partie du contenu contient réellement php et quand retourné, le php est affiché comme texte. J'ai regardé dans la fonction eval() mais ne semble pas fonctionner pour moi, ou peut-être que je l'utilise mal.Retour php de la base de données et le rendu du code

est ici et l'exemple de mon code:

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); 

Ensuite, le contenu est retourné:

<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 OÙ acti sous-menus ve = '1' et menu_id = '". $ _GET ['article']. "'" 'Vous devriez vraiment reconsidérer cela, car il est TRÈS précaire et dangereux d'avoir un tel code qui traîne. – DrColossos

Répondre

2

Tout d'abord, regardez eval. La raison pour laquelle je soupçonne que cela ne fonctionne pas, c'est que eval attend le code pour commencer avec le code php (ce qui signifie qu'il commence une ouverture <?php.) Donc, il essaie d'exécuter le code HTML comme php.Pour résoudre, préfixez votre code avec ?> avant de l'alimenter En second lieu, cela est généralement considéré comme une très mauvaise pratique, car il le rend moins sécurisé (car une vulnérabilité d'injection SQL peut réellement affecter le serveur plutôt que les données) et plus difficile à maintenir (depuis votre code maintenant). vit à deux endroits).

Je vous recommande vivement de trouver une autre solution à votre problème ...

+1

Je seconde ceci. Très mauvaise idée. –

+0

Cool. Merci pour le conseil, je vais chercher une autre méthode pour le faire. –

Questions connexes