Code aus MYSQL
Me
- php
Ich habe in der MySQL-DB einen PHP-CODE. Ist es Möglich, diesen ohne eine große Funktion auf der Webseite auszuführen? Wenn ich folgendes mache:
<?php
echo $row['Inhalt'] //Sollte "HELLO WORLD" ausgeben.
?>
Die Ausgabe bleibt leer. Wenn ich allerdings in den Quelltext schaue, habe ich dort stehen:
<?php
echo "HELLO WORLD";
?>
Hoffe ihr habt eine Lösung für mich.
P.S.: Mir ist klar, dass ist eine Sicherheitslücke. Aber dies wird bei meinem CMS (Was ich gerade am schreiben bin) möglich sein.
Hello,
das Stichwort heißt hier 'eval()'
Aber bitte recherchiere ausführlich hier im Archiv nach dieser Funktion, denn sie ist nicht ohne Tadel!
http://de2.php.net/manual/de/function.eval.php
Ein harzliches Glückauf
Tom vom Berg
Hello,
das Stichwort heißt hier 'eval()'
Aber bitte recherchiere ausführlich hier im Archiv nach dieser Funktion, denn sie ist nicht ohne Tadel!
Ja das die nicht ohne Tadel ist weis ich :(. Vielen Dank für die schnelle Antwort. Jetzt heist es, dass mit der EVAL-Funktion hinzubekommen.
das Stichwort heißt hier 'eval()'
Hmm anscheinend doch nicht.
wenn ich habe:
$test = '<?php echo "hello world"; ?>';
eval ("$t = "$test";");
echo $test;
kommt die Fehlermeldung:
Parse error: syntax error, unexpected T_STRING in D:\PROGRAMME\xampp\htdocs\FANPAGE-NEU\cms\test.php(5) : eval()'d code on line 1
Wenn ich
$test = 'hello world';
habe, funktioniert die Ausgabe.
Hi,
wenn ich habe:
$test = '<?php echo "hello world"; ?>';
eval ("$t = "$test";");
echo $test;kommt die Fehlermeldung:
Parse error: syntax error, unexpected T_STRING in D:\PROGRAMME\xampp\htdocs\FANPAGE-NEU\cms\test.php(5) : eval()'d code on line 1
Na schau dir doch mal an, was du da eigentlich eval-st:
"\$t = \"$test\";"
Wir "setzen ein", und erhalten:
$t = "<?php echo "hello world"; ?>"
// ^Stringanfang
// ^Stringende
Abgesehen von dem syntaktischen Fehler, wuerdest du PHP-Code, der ausgefuehrt werden soll, auch so schreiben, wenn du nicht eval benutzen wuerdest?
$t = "<?php echo 'hello world'; ?>"
Noe, wohl kaum - denn damit weist du nach wie vor einer Variablen $t nur ein Textliteral zu.
MfG ChrisB
Hi,
Ok ty, das mit Eval habe ich jetzt verstanden. Jetzt erkenne ich aber auch: Eval kann mein Problem nicht lösen. Denn als Ergebnis erhalte ich im Prinzip eigentl. das gleiche, wie wenn ich
echo $row['Inhalt']; //was "Hello World" enhält
schreibe. =(
Hi,
Jetzt erkenne ich aber auch: Eval kann mein Problem nicht lösen.
Dann musst du vielleicht erst mal dein *wirkliches* Problem "erkennen", bzw. klarer definieren.
Denn als Ergebnis erhalte ich im Prinzip eigentl. das gleiche, wie wenn ich
echo $row['Inhalt']; //was "Hello World" enhält
> schreibe. =(
Wenn du nur den statischen Text "Hello World" - also reine Daten - ausgeben willst, dann brauchst du natuerlich dafuer auch keine Ausfuehrung von PHP-Code.
Aber du schriebst doch eingangs, dass du PHP-Code ausgefuehrt haben willst? Warum, wieso, in welchem Umfang ...?
MfG ChrisB
--
"The Internet: Technological marvel of marvels - but if you don't know \*what\* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
Hi, ok, sorry wenn ich das problem nicht deutlich gemacht habe.
Ich erkläre es mal:
Ich bin gerade dabei ein CMS zu schreiben. Mit dem CMS kann ich bereits Kategorien und Menüpunkte erstellen(und diese zu den Kategorien zuordnen). Wenn ich einen Menüpunkt erstelle, kann ich dort auch gleich den Inhalt angeben.
Heist ich schreibe in einem Formular wie der LINK heisen soll, der im Menü sichtbar ist. Wie der LINK-TITLE heist (bei Mouseover) & was der Link anzeigen soll(also der Inhalt). Es wäre jetzt also durchaus möglich, dass dieser Inhalt PHP-CODES enthält, die er ausführen soll.
Mein HELLO-WORLD-CODE sollte nur als vereinfachtes Beispiel dienen.
Also kurz gesagt:
Ich habe eine MySQL-TABELLE, da ist der gesamte Inhalt meiner Seite gespeichert. Der Inhalt kann php-codes enthalten, welche ich dann später auch problemlos auf der Seite ausführen will.
Hoffe meine Erklärung war jetzt besser ;-)
Hi,
Also kurz gesagt:
Ich habe eine MySQL-TABELLE, da ist der gesamte Inhalt meiner Seite gespeichert. Der Inhalt kann php-codes enthalten, welche ich dann später auch problemlos auf der Seite ausführen will.Hoffe meine Erklärung war jetzt besser ;-)
Du hast das "ich will" wiederholt - aber zum *Problem* finde ich immer noch sehr wenig.
DIe Antwort lautet immer noch eval.
MfG ChrisB
Hi,
Ok, dann will ichs noch weiter vereinfachen.
Stellt euch vor in der Datenbank steht folgendes:
if($status == "offline") {
echo "Status:offline";
} else {
echo "Status:online";
}
so. Das ganze wäre jetzt z.B. in der Tabelle test. Wie kann ich das dann ausführen? Eine Echo-ausgabe wäre, denke ich nicht geeignet. Und es kommt mit eval() das gleiche raus, wie wenn ich folgendes machen würde:
$sql = mysql_fetch_assoc(mysql_query("SELECT * FROM test WHERE ID='1'"));
echo $sql['status'];
Hi,
Stellt euch vor in der Datenbank steht folgendes: [PHP-Code]
so. Das ganze wäre jetzt z.B. in der Tabelle test. Wie kann ich das dann ausführen? Eine Echo-ausgabe wäre, denke ich nicht geeignet. Und es kommt mit eval() das gleiche raus, wie wenn ich folgendes machen würde:echo $sql['status'];
Dann wendest du eval wohl falsch an.
MfG ChrisB
Morgen,
Dann wendest du eval wohl falsch an.
kann sein, ich weis aber nicht wie ich es anders anwenden soll =(. Es wird ja ein String ausgegeben. Wie kann ich den weiterverwenden / die codes darin ausführen?
Hi,
Dann wendest du eval wohl falsch an.
kann sein, ich weis aber nicht wie ich es anders anwenden soll =(. Es wird ja ein String ausgegeben. Wie kann ich den weiterverwenden / die codes darin ausführen?
Per eval.
Drehen wir uns nicht langsam im Kreis?
Vielleicht solltest du langsam mal konkretere Fragen stellen, wenn du ein konkretes Problem vorliegen hast.
MfG ChrisB
Drehen wir uns nicht langsam im Kreis?
Vielleicht solltest du langsam mal konkretere Fragen stellen, wenn du ein konkretes Problem vorliegen hast.
Angenommen ich hätte folgenden Code in der Datenbank stehen:
$i = $_POST['nummer'];
if($i != 1) {
echo "Die Zahl ist nicht 1";
} else {
echo "Die Zahl ist 1";
}
Eval würde ich aber so einsetzen:
<FORM method="post" action="...">
<INPUT type="text" name="nummer" /><br>
<INPUT type="submit" value="senden" /><br>
</FORM>
<?php
$test = $row['Nummer'];//$row['Nummer'] soll die oben enthaltene IF-ELSE-ABFRAGE enthalten.
eval ("\$zahl = \"$test\";");
echo $zahl;
?>
So, wie kann ich jz diese IF-ELSE-ABFRAGE (welche in einem Array o. String enthalten ist) ausführen?
Hi,
Angenommen ich hätte folgenden Code in der Datenbank stehen:
$i = $_POST['nummer'];
if($i != 1) {
echo "Die Zahl ist nicht 1";
} else {
echo "Die Zahl ist 1";
}
>
> Eval würde ich aber so einsetzen:
> [...]
> $test = $row['Nummer'];//$row['Nummer'] soll die oben enthaltene IF-ELSE-ABFRAGE enthalten.
> eval ("\$zahl = \"$test\";");
> echo $zahl;
Was zum Geier willst du denn mit $zahl = "irgendwas"?
"irgendwas" ist immer noch ein Textliteral.
[Schon ganz zu Beginn](https://forum.selfhtml.org/?t=172166&m=1127875) wies ich dich darauf hin, dass es bloedsinnig ist, PHP-Code als Textliteral zuweisen zu wollen, und dann anzunehmen, er wuerde dadurch ausgefuehrt ... Noch mal: Das machst du so doch auch nicht, wenn du etwas ohne eval ausfuehren willst - also warum versuchst du das hier?
> So, wie kann ich jz diese IF-ELSE-ABFRAGE (welche in einem Array o. String enthalten ist) ausführen?
~~~php
$code = '$i = 1;
if($i != 1) {
echo "Die Zahl ist nicht 1";
} else {
echo "Die Zahl ist 1";
}';
eval($code);
Was ist daran so kompliziert?
MfG ChrisB
Hi
Was ist daran so kompliziert?
Theoretisch gesehen garnix. Nur praktisch hatte ich nicht gewusst, das man Eval auch so nutzen kann. (vllt war es in dem link zur php-seite welche eval erklärt drin gestanden, habs aber nicht gefunden). Werde es gleich mal ausprobieren.
MFG
Me
P.S.: Vielen dank dass Ihr soviel Gedult mit mir hattet ;-)