Zur Navigation

php-code erlauben

1 tomaschko

Noch eine kleinigkeit...

um bestimmte dinge einbinden zu können, wollte ich dass in dem cms auch phpcode eingegeben und ausgelesen werden kann, habe deshalb auch kein htmlentities angewendet, jedoch wird der php-code bei der auslese nicht umgesetzt, stattdessen liest er nichts aus.

Ist er echt?

02.01.2007 11:19

2 Rudy

Wenn Du den PHP-Code speicherst, ist das normaler Text. Der sollte in jedem Fall gespeichert und ausgelesen werden können. Um ihn nach dem Auslesen an den richtigen Stellen auszuführen musst Du dann die Blöcke bei der Ausgabe finden (z.B. mit preg_replace oder preg_replace_callback) und mit eval() (in der callback-Funktion bzw. bei preg_replace als direkten Funktionsaufruf im 2.Parameter) ausführen. Ein Beispiel mit preg_replace_callback findest Du hier auf php.net (oberhalb ein Beispiel mit preg_replace).

02.01.2007 12:08

3 tomaschko

nein, ich will nicht den php-code angezeigt bekommen, ich will ihn ausgeführt bekommen. Das heisst wenn ich im adminmenu neuen content anlege, dass ich dann php-code nutzen kann um beispielsweise ein guestbook einzubauen oder so.

Ist er echt?

02.01.2007 12:15

4 Rudy

nein, ich will nicht den php-code angezeigt bekommen, ich will ihn ausgeführt bekommen.
Schon klar, Du speicherst den PHP-Code als Text - wahlweise auch in html reingemischt - in der DB und führst die Blöcke nach dem Auslesen aus - genau das machst Du auch mit den Beispielen unter Verwendung von eval(). Hast Du es schon versucht?

02.01.2007 14:06

5 Jörg Kruse

ich will nicht den php-code angezeigt bekommen, ich will ihn ausgeführt bekommen.

Aber das hat Rudy auch beschrieben. Zum Ausführen des Codes benötigst du die Funktion eval()

Edit: da war Rudy 'nen Takt schneller

02.01.2007 14:07 | geändert: 02.01.2007 14:07

6 tomaschko

oh, ich dann hab ich euch missverstanden, als ich dacht ich wurd missverstanden...

ich probier es mal...da ich die funktion noch nicht kannte, muss ich mal sehen ob ich es auf anhieb hinbekomme.

Ist er echt?

03.01.2007 08:06

7 tomaschko

ich versteh das ganze nich...

das problem was ich habe is, das ich eine funktion format habe um BB-Codes auszuführen, weil es ja leute gibt, die gar keine ahnung vom coden haben, kann ich die sache mit dem eval() in die funktion irgendwie einbauen???

function format($text) {
  $ergebnis=($text);
  $ergebnis=str_replace("\r\n\r\n","<br><br>",$ergebnis);
  $ergebnis=str_replace("\r\n","<br>",$ergebnis);
  $ergebnis=str_replace("[*B]", "<b>",$ergebnis);
  $ergebnis=str_replace("[/*B]", "</b>",$ergebnis);
  $ergebnis=str_replace("[*I]", "<i>",$ergebnis);
  $ergebnis=str_replace("[/*I]", "</i>",$ergebnis);  
  $ergebnis=str_replace("[Q]", "&raquo;",$ergebnis);
  $ergebnis=str_replace("[/Q]", "&laquo;",$ergebnis);
  return $ergebnis;
}

die sternchen hab ich gesetzt, damit dein system die bb-codes nicht interpretiert
Ist er echt?

03.01.2007 08:18 | geändert: 03.01.2007 08:21

8 Jörg Kruse

Am saubersten wäre es, denke ich, wenn du die Funktion innerhalb des Codes verwendest, den du nachher ausliest

$code = '$text = "[B]Hallo Welt![B]"; $text = format($text); echo $text;';

eval($code);

03.01.2007 11:10 | geändert: 03.01.2007 11:15

9 tomaschko

Wenn ich php code ausführe klappt es, aber wenn nur einfacher text in der db steht meldet er:

Parse error: parse error, unexpected $ in /srv/www/web79/html/index.php(65) : eval()'d code on line 1

Ist er echt?

03.01.2007 11:24

10 tomaschko

hab mal vor den text der in der db steht ein ?> gesetzt, nun liest er es aus, format() wird aber nicht mehr angewendet

Ist er echt?

03.01.2007 11:37