PHP Code mit SQL ausgeben

mauricepre

Grünschnabel
Hallo,
Ich suche einen Code der MySQL ermöglicht einen PHP Code auszugeben und anzuzeigen.

Beispiel: In der Tabelle steht ein PHP-Code und der Code soll dann auf der Webseite Abgerufen werden und auch Funktionieren.

--
-- Daten für Tabelle `code`
--

INSERT INTO `code` (`id`, `code`) VALUES
(1, '<?="Hello World";?>');

--
-- Daten für index.php
--

PHP:
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("code", $con);

$result = mysql_query("SELECT * FROM code
WHERE id='1'");

while($row = mysql_fetch_array($result))
  {
  echo $row['code'];
  }
?>

MFG

Maurice
 
Zuletzt bearbeitet:
Auf wen ist das bezogen?
Hab ich was Falsches gesagt oder meinst du damit,
dass man statt eval eine andere Lösung suchen soll
(eben aus Sicherheitsgründen etc.)?

Letzteres stimm ich zu. Hätte das oben besser ausdrücken sollen.
 
Ich meinte natürlich, dass man nie, niemals, in keinem Fall, nicht in hundert Jahren eval() nutzen und schon gar nicht PHP-Skripte in einer Datenbank speichern sollte. Das ist nicht nur gefährlich und unsicher, es zeugt auch noch von sehr schlechtem Stil.
 
Ich sag jetzt mal nichts zur Sicherheit, aber der Code:
PHP:
function EvalReturnResult($code)
{
	ob_start();
	eval($code);
	$erg=ob_get_contents();
	ob_end_clean();
	return $erg;
}
tut genau das.
Wenn du HTML mit PHP integriert hast, kannt du diese Funktion nutzen:
PHP:
function GetRawHtml($code)
{
	$erg=strstr($code,"<?php");
	while(!empty($erg)) 
	{
		$phpcode=substr($erg,5,strrpos($erg,"?>")-6);
		$ergebnis=EvalReturnResult($phpcode);
		$strfirst=substr($code,0,strrpos($code,"<?php"));
		$strlast=substr($code,strrpos($code,"<?php")+strlen($phpcode)+8);
		$code=$strfirst . $ergebnis . $strlast;
		$erg=strstr($code,"<?php");
	}
	return $code;
}
Ich hoffe, das ist das, was du wolltest.
 
Hab nicht gesagt, dass es guten Stil wäre, hab nur ne Lösung rasch gepostet. Auch ist es nicht allzu sicher, richtig. Aber ich hab seine Frage beantwortet.
 
Nebenbei: Wenn man schon dynamisch Skripte ausführen will, die nicht als PHP-Skriptdateien gespeichert sind, dann speichere man die bitte (temporär) als PHP-Skriptdateien und lade sie entweder in die bestehenden Skripte oder führe sie als eigenen Prozess auf der Shell aus. Aber niemals eval(), denn eval() ist evil!
 
Zurück