php code in variablen
Toadward
- php
0 AlexBausW0 Antje Hofmann0 Toadward0 Carsten
hallo forumler,
kann mir jemand bei folgendem problem weiterhelfen ??
ich lese den inhalt eines datenbankfelds in die variable $inhalt. danach gebe ich den inhalt der variable mit dem befehl echo aus --> echo $inhalt;
mit text und html inside geht das auch ganz gut, wenn ich jedoch in das datenbankfeld php code reinschreibe funkt es nicht so wie ich es mir denke. der php code wird als ganz normaler text ausgegeben.
gibt es da einen trick??
das datenbankfeld ist vom typ "longtext" !!!
ich bin für jeden hinweis dankbar!!!
thx
toadward
Hallo Toadward,
ich lese den inhalt eines datenbankfelds in die variable $inhalt. danach gebe ich den inhalt der variable mit dem befehl echo aus --> echo $inhalt;
mit text und html inside geht das auch ganz gut, wenn ich jedoch in das datenbankfeld php code reinschreibe funkt es nicht so wie ich es mir denke. der php code wird als ganz normaler text ausgegeben.
Imho ist das was Du suchst eval(); Das interpretiert einen String als Code, und führt diesen aus.
Gruß AlexBausW
Please visit my SELFvisitingcard @ http://www.atomic-eggs.com/selfspezial/daten/150.html
Hallo Toadward,
mit text und html inside geht das auch ganz gut, wenn ich jedoch in das datenbankfeld php code reinschreibe funkt es nicht so wie ich es mir denke. der php code wird als ganz normaler text ausgegeben.
gibt es da einen trick??
ja eval() ist das Zauberwort. siehe auch http://php-center.de/de-html-manual/function.eval.html
Viele Grüße
Antje
hallo,
ich habe das mit dem eval mal ausprobiert und auch in dem php-manual help file gefunden.
leider geht es aber nicht so, wie ich das möchte :-(
folgeden code benutze ich zum ausprobieren:
<?php
$anz=20;
$inhalt='hallo $anz<br>echo"tester";';
eval("$inhalt = "$inhalt";");
echo $inhalt;
?>
</p>
rauskommen soll:
hallo 20
tester
rauskommt aber:
hallo 20
echo"tester";
also funkt das eval irgendwie nur mit php variablen, aber nicht mit normalen befehlen (die eval zeile stand so im php-manual).
kann mir da irgendwer weiterhelfen ???
thx
toadward
Hallo Toadward,
Dröseln wir den Code mal auf:
$anz=20;
$inhalt='hallo $anz
echo"tester";';
in $inhalt steht jetzt der Text 'hallo $anz \n echo "tester";'
Wie dir bestimmt auffällt ist das keine gültige PHP Syntax.
eval("$inhalt = "$inhalt";");
Hier wird jetzt folgendes Codestück zusammengebaut und ausgeführt
$inhalt="hallo $anz \n echo "tester";";
^^^^
dabei wird jetzt, durch die Auswertung beim eval(), die 20 eingefügt, so
dass hinterher in $inhalt 'hallo 20 \n echo "tester";' steht, also genau die
Ausgabe die du bekommst.
Um das zu erzielen, was du dir vorstellst sähe der Code so aus:
<?php
$anz=20;
$inhalt='echo "hallo $anz \n tester";' ;
eval ($inhalt);
?>
Anmerkung: Das \n erzeugt einen Zeilenumbruch im String. Ich finde die
Zeilenumbrüche im Quelltext, die hinterher im String wieder auftauchen
unübersichtlich (sie versauen die Einrückungen), deswegen stattdessen \n.
und, raucht die Birne schon?
...Nein... ok:
<?php
$anz=20;
$inhalt='hallo $anz \n echo"\ntester";';
eval("$inhalt = "$inhalt";");
echo $inhalt."<br>";
$teile=explode("\n",$inhalt);
echo $teile[0];
eval($teile[1]);
?>
jetzt bekommst du auch wieder deine 'erwartete' Ausgabe.
Tipp: Ersetze beim Testen solcher Programme eval() durch echo und guck dir
an was bei rauskommt -> es muss gültiger Code sein der das tun würde, was du
möchtest.
also funkt das eval irgendwie nur mit php variablen, aber nicht mit normalen
befehlen (die eval zeile stand so im php-manual).
Geh mal davon aus, das PHP _funktioniert_. Einer der angenehmen Eigenschaften
der Sprache. Manchmal nicht gut fürs Ego, aber schon praktisch weil man gleich
weiss wo man den Fehler suchen muss ;-)
Gruss,
Carsten