PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-Code aus Datenbank


bruder-c
08.04.2004, 14:44:39
Für ein Projekt muss ich php-code in eine Datenbank speichern.
Je nach Funktionsaufruf soll der Quellcode aus der DB ausgelesen, und ausgeführt werden.
Ich bin soweit das ich den Code in einer Variable habe. Aber wie bekomme ich nun das Programm dazu diesen Code auch auszuführen?
Mit echo $code gehts schonmal nicht.

Dago
08.04.2004, 15:42:48
eval() (php.net/eval)

bazubi
08.04.2004, 15:43:14
Kuck dir mal die Funktion eval() an.

Dago
08.04.2004, 15:44:53
Gewonnen :P

bruder-c
08.04.2004, 17:20:40
Das war auf jedenfall schonmal in die richtige Richtung.
Allerdings komme ich immer ncoht ans Ziel.


$code = "<?PHP echo phpinfo; ?>"
eval("$code = "$code";");
echo $code;


dieser Codeschnippsel fürht zu einer leeren Ausgabe.
auch

echo eval("$code = "$code";");

führt zu sprichwörtlich 'nichts'

Dago
08.04.2004, 17:30:33
Ich weiß zwar nicht genau, was du bezwecken möchtest, aber um den PHP-Code in der Variable $code auszuführen, müssen
1.<?php und ?> raus
und
2. muss es so lauten: eval($code);

bruder-c
08.04.2004, 17:57:01
Danke, das wars.
Bezwecken möchte ich folgendes.
Ich Arbeite gerade an einen WCM-Backend. In diesem Backend sollen nur Grundfunktionen zum Programmieren des Backends fest im Quellcode stehen. Alle anderen Funktionen zum Administrieren will ich als Module in einer Datenbank stehen haben. Diese Module können dann zB. eine eMail-Liste Verwalten, Preislisten Verwalten, Artikel auf die Startseite schreiben....usw..
Je nach Konfiguration oder Art des Setups wird dann als Ausgabe ein Content-Management 'ausgespuckt'

NanoCyte
08.04.2004, 20:26:02
echo phpinfo;

guck dir mal genau an, wo da der fehler liegt ^^
es musst phpinfo() heißen ;)

und nachdem was du da so schilderst würde ich mal überlegen, ob du das ganze wirklich auf mysql-basis willst, kann mit der zeit ganz schön viel und unübersichtlich werden. mal nen vorschlag, mach das ganze doch direkt mit include files und schreib die entsprechenden dateien selbst um. du kannst ja mittels file(), fopen() und so weiter auch etwas erzeugen, dass würde bestimmt schneller gehen. aber wenn dir das zu kompliziert wird, mach ruhig mysql weiter, das passt schon, war nur ne idee von mir grad eben *g*

bruder-c
08.04.2004, 23:53:12
das war nur ein Schreibfehler beim Posten.
Ich will beide Möglichkeiten drinne haben. Aus den DB-Quellcode sollen auch functionen auf Wunsch in Dateien geschrieben werden. Diese Dateien bekommen von mir dann Kryptische Dateinamen von wegen der Sicherheit. Und jedesmal wenn ich mir die Dateien neu schreibe, bekommen diese wieder andere Dateinamen, usw...
Bevor das mit eval gefunzt hat, bin ich hingegangen und habe in einen Temp-Dir eine datei mit Kryptischen Dateinamen geschrieben, anschl. ausgelesen und sofort (noch vor der ausgabe) wieder gelöscht. Das ist ansich fast noch besser geeignet als die eval Lösung. Allerdings geht das zur Last der Performance, aber beim WCM zusammenschrauben bin ich ja Quasi allein im System.

Nochmals Danke ! Frage hier immer wieder gerne :) .

NanoCyte
09.04.2004, 00:11:52
wieso kryptische dateinamen?
wenn du ein CMS bauen willst oder so, dann musst du da nur dateien erschaffen wie suche.php , die der user selbst produziert.
wo ist dein problem, da einfache namen zu verwenden, solange die endung .php da ist, werden die per http geparst, aber wenn du sie vor der ausgabe zum ändern auslesen tust und dann entsprechend umgewandelt ausgibts, kann nur derjenige, der wirklich berichtigt ist, den quellcode ungeparst sehen

bruder-c
09.04.2004, 00:30:53
kryptische Dateinamen sind kein grosser Aufwand. Den Quellcode dafür habe ich schon lange. Die Dateinamen sind immer einmalig und lassen sich in meinen System auf ein Erstellungsdatum zurückführen. Darüber hinaus Weiss ich sofort welchen Kunden ich diese Datei ausgeliefert habe. Klar gibt es auch andere Wege. Aber es kommt nochmal ein grosser Teil Sicherheit dazu. Und was das angeht, da bin ich Paranoid. Links Lassen sich in meinen System nur schwer nachvollziehen. Jeder Link wird wenigstens zweimal mit der Useradmin verglichen um sicherzustellen das der User auch die Berechtigung hat das File anzupacken.
Das System das ich Programmiere ist Modular aufgebaut. Viele bereits Programmierte Klassen und Funktionen laufen hier zusammen. Damit ich nicht jedesmal ein WCM wieder von vorne anfangen muss.
Jeder hat doch sein System an Ordnern und Dateinamen das er für sich am geeignetsten hält....und das ist halt meines.

NanoCyte
09.04.2004, 01:12:28
klar hat er das und so dateinamen zu erzeugen ist wirklich net schwer.
nur gibts da meiner meinung nach viel einfachere sachen, die weitaus net so kompliziert sind
aber wenn du damit glücklich wirst, is ja gut ;)

meikel (†)
09.04.2004, 03:02:37
Original geschrieben von NanoCyte
aber wenn du damit glücklich wirst, is ja gut ;)
Das Glück wird sich in Grenzen halten.
1. müssen die "PHP-Script-Strings" in einer speziellen Weise präpariert werden, daß sie nicht beim INSERT oder beim SELECT geparst werden sondern erst beim eval.
2. wird bei eval() die Fehlersuche recht abenteuerlich ("... Fehler in Zeile 0...")

Ich fand die Idee kurzzeitig auch mal schick. Aber eben nur kurzzeitig... <ggg>