PHP-Code per Eingabe ausführen lassen.
-
ja, genau sowas habe ich gesucht!
-
vergiss nie:
e v a l() ist böse....
also man sollte diese funktion nicht verwenden.. sicherheitslücke
-
Tja und was dann?
-
selber schreiben...
mit Hilfe von regexps ists ganz easy und n bisschen dirty
und normales parsen gibts ja auch nochdas sollte an einem nachmittag fertig sein... in PHP ist ja alles einfach
-
das sollte an einem nachmittag fertig sein... in PHP ist ja alles einfach
... und du bist ja so toll ... und schön, wenn man von sich immer auf andere schließt, die sich vielleicht nicht den ganzen Tag mit Programmierung beschäftigen. Sorry aber musste jetzt mal sein...
ich danke mal trotzdem für die Hinweise und werd mal schauen was ich damit anfangen kann...
MfGTobsen
-
Original erstellt von Tobsen:
**... und du bist ja so toll ... und schön, wenn man von sich immer auf andere schließt, die sich vielleicht nicht den ganzen Tag mit Programmierung beschäftigen. Sorry aber musste jetzt mal sein...
**schau dir mal sachen wie Smarty an:
die syntax der template engine ist easy:am anfang wirkt es komplliziert, aber wenn man naeher hinschaut ist es einfach.
suchen wir also immer nach {
$str=strstr($tmpl,'}'); $pos=strpos($str,' '); $var=substr($str,0,$pos); $value=get_var($var); $tmpl=str_replace($tmpl,'{'.$var.'}',$value);
und schon haben wir alle variablen ersetzt
ein if koennte man mit regexps einbauen, da bin ich aber zu faul...
$str=strstr($tmpl,'{if('}; //syntax {if(var = 10) text} $str=strstr($str,'('); $str=substr($str,1); $pos=strpos($str,')'); $exp=substr($str,0,$pos); $eval=evalute_exp(); //hier muesste man jetzt auf = <> < <= >= > testen if($eval) { $str=strstr($str,')'); $str=substr($str,1); $pos=strpos($str,'}'); $str=substr($str,0,$pos); $tmpl=str_replace($tmpl,'{if('.$exp.')'.$str.'}',$str); }
das ganze waren jetzt keine 10 minuten
wie du siehst, darfst du dir nur nicht denken 'boah ey, ist das schwer', sondern musst dir denken: OK, wie gehen wir das an.
das ist keine ueberheblichkeit von mir, sondern ich will dir damit nur zeigen, dass es nicht schwer ist. notfalls kannst du auch ganz primitiv mit split() immer die { und } splitten... das ist auch ganz einfach.
unsere parsing routine fuer ifs und variablen hat keine 30 zeilen.
wenn du dann noch funktionen dazu willst und operatoren, dann brauchst du sicher 100 zeilen... aber wie du siehst ist das nicht so kompliziert...
PS:
wahrscheinlich habe ich mich mit strpos() vertan, weil du vertue ich mich immer...
-
Danke dir!
-
@Shade
konnte mich zwischenzeitlich leider nicht mit deinem Beispiel beschäftigen und jetzt habe ich ein paar Fragen.
1. Muss ich mich mit Smarty beschäftigen um dein Beispiel zu verstehen?
2. Finde ich nirgends die Funktion get_var genausowenig wie die F. evaluate_expIn deinem Beispiel ersetzt du zwar einiges, aber ich finde nicht die Stelle wo du das letztlich parsen lässt, so dass der eingegebene String auch als Teil des Scripts ausgeführt wird.
MfGTobsen
Ps: Mag sein, dass ich das Prinzip nicht verstanden habe....
-
*push* weiß niemand Rat?
-
hey shade, hilf mir bitte noch mal bissle mehr! Ich bekomm das net hin!
MfGTobsen