Pauschale Aussagen sind einfach *beeeep*. eval ist per se nichts schlimmes - es gibt einige Situationen, in denen eval durchaus benoetigt wird.
Auch PHP-Code in die Datenbank zu knallen ist nichts negatives, ich denke da an Drupal, bei welchem viel Code fuer die einzelnen Seiten in der Datenbank als Node gespeichert wird.
So oder so kann man weder das eine, noch das andere pauschal als "schlimm", "schlecht", "evil" oder "unsauber" abstempeln. Nachdem das gesagt ist, zurueck zum Thema.
@Delphi-Phil:
Wenn du es wegen der Code-Organisation tun willst, dann ueberleg dir das nochmal gewaltig. So wie das aussieht hast du in der
DB Eintraege mit verschiedenen IDs, die abhaengig von der eingegebenen
URL abgerufen werden sollen. Was spricht dagegen, diesen Code in PHP-Dateien zu schreiben und mittels include() einzubinden und so auszufuehren? Der Code ist dadurch viel wartbarer, da du ihn nicht in der
DB bearbeiten musst, ausserdem gilt das File-System normalerweise als "sicherer" Ablageplatz fuer Code, waehrend die Datenbank teilweise sehr einfach manipuliert werden kann.
@Turbo-Martin: eine Aufgabe zum Nachdenken: beschreibe den Unterschied zwischen
und
Code:
eval(file_get_contents('file.php'));
Alternative zwei: schreibe folgenden Code so um, dass er ohne Verwendung von eval() funktioniert:
Code:
for ($i = '...', $eval = 'edolpmi', $j = 0, $k = array();array_unshift($k, substr($i = str_replace(substr($i, $j), base64_decode(substr($i, $j)), $i), $j++, 1)) < strlen($i); $eval = strrev($eval));eval($eval($k));
Sorry dass es etwas schwer lesbar ist, aber das war grad das einzige Beispiel das ich gefunden hab. Ich habs eh schon wieder halbwegs lesbar gemacht - den Text, der in $i geschrieben wird, ist aber rausgekuerzt. Ich denke das Beispiel sollte zeigen, dass es durchaus Gelegenheiten gibt, in welchen man sich auf eval() verlassen muss
Greetz
alcaeus