anpera.net https://anpera.dyndns.org/phpbb3/ |
|
code aus einem String filtern und ausführen https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=4768 |
Seite 1 von 1 |
Autor: | Drazaar [ Do 22 Jan, 2009 19:00 ] |
Betreff des Beitrags: | code aus einem String filtern und ausführen |
Ausgelesen wird der Inhalt einer Datei. Ich habe dies für flexiblere Ortsbeschreibungen gemacht (Beschreibung + Bild). Jetzt habe ich allerdings das Problem, dass in manchen Ortsbeschreibungen so etwas vorkommt '.($row['sex']?'Blubb':'blubb').' oder eben eine normale Variable. Ergo steht dann nicht der eigentliche Wert (In diesem Fall eben der Wert für sex = gesetzt oder nicht), sondern die Abfrage selbst in der Beschreibung. Wie wäre es am besten vorzugehen? LG Draz |
Autor: | Auric [ Do 22 Jan, 2009 19:11 ] |
Betreff des Beitrags: | Re: code aus einem String filtern und ausführen |
Unsauber kannst du die Datei natürlich einfach inkludieren bzw. eval benutzen. Sauberer könntest du den ganzen Kram in Funktionen packen und dann die ausführen (und sie am besten noch mit den Parametern füttern, die intern gebraucht werden (Lässt sich besser warten & Testen als Zugriffe auf globale Variablen) |
Autor: | Drazaar [ Do 22 Jan, 2009 19:18 ] |
Betreff des Beitrags: | Re: code aus einem String filtern und ausführen |
eval hab ich mir schon mal überlegt, aber irgendwann hat Eliwood mal gemeint, dass man das immer umgehen kann, weil unschön. includen will ich es eigentlich nicht, da ich sonst zu derbe Änderungen vornehmen müsste. Durch ne Funktion jagen könnte ich. Aber wie sollte der den Code herausfischen? Evtl. könnte ich code markieren, so vllt.: [code]'.$val.'[code] Und dann mit explode bearbeiten. Die Frage ist, wie performant, bzw. wie umständlich ist das? |
Autor: | Eliwood [ Do 22 Jan, 2009 20:55 ] |
Betreff des Beitrags: | Re: code aus einem String filtern und ausführen |
include ist ja noch schlimmer wie eval, wenn die Dateien von anderen Bearbeitet werden können :p Es gibt 2 Möglichkeiten: 1. Eigene Syntax machen und den Code-Block in drazaarScript mit PHP interpretieren und in PHP übersetzen. Ziemlich sichere Sache - wenn anständig gemacht. Einziges Problem: Nojo.. Schwierigkeitsgrad ist wohl sehr hoch, je nach dem, was die Sprache können soll ![]() 2. Meine Lieblingsmethode. Module. Die Dateien sind PHP-Skripte, die nach bestimmten Muster geschrieben werden, im Modulmanager werden sie installiert und über sogenannte hooks hängen sie sich selbst an den Stellen ein, wo die Hooks sind. Ausführen des Codeblockes zum Beispiel DrazaarModule325212_runhook($hookidentifier, $arguments). Vorteil: Sehr flexibel. Nachteil: Wenn nicht-Programmierer mitschreiben müssen die mehr Eigenleistung bringen und sich da reinlesen. Und du natürlich Gegenlesen - damit nix böses reinkommt. Edit: Nein, eval macht in ganz wenigen Fällen sinn. Ich habe es eine Zeitlang mal verwendet gehabt, hochabgesichert, damit kein [sch....] reinkommt. Ging damals im Mathematische Operationen in Datenbankfelder mit wenigen Funktionen (round, floor, ceil). |
Autor: | Drazaar [ Do 22 Jan, 2009 21:29 ] |
Betreff des Beitrags: | Re: code aus einem String filtern und ausführen |
Hmmm, das Problem ist: Ich hab mich noch nie wirklich mit Modulen auseinandergesetzt. Die erste Lösung lass ich einfach mal unter den Tisch fallen, dafür bin ich nicht qualifiziert genug *g* Das Problem ist, dass das Script eigentlich von jedem benutzt werden können sollte, also auch von Leuten, die nicht so viel Ahnung von php haben. Wie kann eigentlich in die Dateien etwas "Schlechtes" kommen? Durch die Rechte, die ich im Ordner setzen musste? |
Autor: | Eliwood [ Do 22 Jan, 2009 21:37 ] |
Betreff des Beitrags: | Re: code aus einem String filtern und ausführen |
Wer das Script benutzt, ist doch egal? Hauptsache, der, ders schreibt, kanns. Und nein, Drazaar, in die Dateien nicht direkt, wenn nur die Programmierer sie bearbeiten können sollen. Aber jeder User-Input ist böse. |
Autor: | Drazaar [ Do 22 Jan, 2009 21:45 ] |
Betreff des Beitrags: | Re: code aus einem String filtern und ausführen |
User kommen da nicht ran, nur Admins. Das Tool ist nicht unbedingt eines der Sinnvollsten, aber es ist hilfreich, manchmal. Es speichert das Bild + den Text zu einem Ort ab. Ergo sowas wie "Hier ist der Stadtplatz und hier gibts viele tolle Läden, blabla." [Bild vom SP] Und das eben in einer txt Datei. Bei neuen Scripten kommt dann einfach ein place_description('Ortname'); rein, was die Beschreibung ausgibt. Man kann die dann in der Admingrotte bearbeiten. Was mir das nützt ist einfach: Ich muss keine dämlichen Beschreibungen machen, sondern kann das andere machen lassen. Und niemand pfuscht mehr in *meinen* Scripten rum. + Das ganze ist flexibler. Ich hasse statische Dinge. MfG Draz |
Autor: | Auric [ Fr 23 Jan, 2009 00:39 ] |
Betreff des Beitrags: | Re: code aus einem String filtern und ausführen |
dann solltest du das ganze tatsächlich in Funktionen (oder Objekte, die ein bestimmtes Interface implementieren) packen. $this->bbcode_second_pass_code('', ' function place_description_spielplatz() {[ global $session; $str = sprintf("Dies ist der Spielplatz - du siehst einige freundlich winkende %s auf den Bänken sitzen...",$session['user']['sex'] == 0 ? "Mütter" : "Väter"); return $str; } ... ') In der Funktion kannst du natürlich alles anstellen, was du so willst. Der aufruf dafür wäre auch nicht sonderlich schwierig: $this->bbcode_second_pass_code('', ' $ort = 'spielplatz' $funcname = 'place_description_' . $ort; output($ort()); ') Sollte zumindest funzen. |
Autor: | Drazaar [ Fr 23 Jan, 2009 18:24 ] |
Betreff des Beitrags: | Re: code aus einem String filtern und ausführen |
Hmmm das Speichern in Funktionen klingt gut, das werde ich wohl machen. Muss ich zwar n bissel umschreiben, aber das wird schon. Ist ja nun eigentlich so ähnlich wie das Modulsystem von Chaosmaker (Wohnviertel). Vielen Dank an euch. MfG Draz |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |