php code per formular übergeben

  • Wie kann ich php code per formular übergeben und dann ausführen lassen?


    Mein Code:


    Meine Idee war dabei ja die anführungszeichen die strings haben zu entfernen. hat net geklappt. ich möchte das "2" als ausgabe kommt wenn man "1 + 1" abschickt.! :(

  • du brauchst keinen Code zu übergeben - nur Werte - falls das ein Rechner werden soll ??




    oder willst etwa in das Feld erst einen String durch den Benutzer eingeben lassen und diesen dann in eine Integer Variablen Typ umwandeln?


    und um alles in der Welt meinst du mit

    Zitat

    die anführungszeichen die strings haben zu entfernen


    bei der Ausgabe wird das Hochkommata nicht ausgegeben - es dient zur Unterscheidung für die Programmiersprache um überhaupt einen String zu erkennen - wenn ich das denn richtig formuliere


    lg

  • gehöre schon zu den etwas fortgeschrittenen im forum und bin kein Anfänger :P :) ;)


    meine Frage (ob man einen String parsen lassen kann) war um einen Taschenrechner mit nur einem Input Feld zu basteln und nicht mit mehreren :)


    by the way:
    $String = "Anführungszeichen Links und rechts";


    meine Idee war die zu entfernen und man kann PHP Code direkt ausführen lassen.

  • Man könnte vielleicht die Formulareingabe in eine Datei schreiben und diese dann includen? Das würde aber nur mit fertigen Anweisungen funktionieren, nicht mit einzelnen Ausdrücken wie $a + $b

    PHP
    if (isset ($_GET['code'])){
    	$tmpFile = "tmp.php";
            $fileString = "<?php" . $_GET['code'] . "?>";
    	file_put_contents($tmpFile,$fileString);
    	include($tmpFile);
    	unlink($tmpFile);
    }


    Nicht getestet!

  • achso läuft der hase ;)


    das ist dann doch eine komplexe sache meines erachtens.


    @drPHIP132
    php-code direkt ausführen klingt für mich sehr ungewöhnlich


    hochkommatas entfernen ?? ich weiß nicht was du für einen knoten hast ? es werden ja nirgendwo hier hochkommatas übergeben ?



    aber gute frage!!
    ist mM einen Wetbewerb wert


    lg

  • Also ich würde es per RegEx probieren - scheint mir irgendwie so momentan die einzige Möglichkeit :)


    Das mit dem Wettbewerb ist ne Idee.. ich bin übers Wochenende nicht wirklich erreichbar, aber wer Aufgabenvorschläge hat gerne her damit :)

  • Idee:
    Probiers mal mit explode() mit allen Operatoren, dann überprüfen ob es geklappt hat, wenn ja die einzelnen Array-Teile gegeneinander addieren/subtrahieren etc., je nach Operator.

  • du wolltest wissen wie man es löst,
    so kann man es lösen. :)


    hätte eigentlich eher auf die Sache mit explode kommen können.
    wie willst den sonst den String aufteilen um $Zahl1 $rechenoperation und $Zahl2 zu erhalten.?


    bei meiner Sache muss man die $_POST variable nur noch durch trim(); jagen da dort "x Leerzeichen" zu " " wird. sonst /könnten/würden mehr als drei Arrayelemente in $Split entstehen :)

  • Da gibts ne schöne Funktion für: eval

    PHP
    $ergebnis = eval($_POST['input']);


    Die führt PHP-Code in Strings aus.


    Du solltest dir aber vorher hundertprozentig sicher sein, dass wirklich nur Rechenaufgaben eingegeben werden, sonst kann jeder PHP-Code einschleusen und ausführen lassen
    z.B. per RegEx auf Zahlen, Leerzeichen und Rechenzeichen.


    Ich hatte da auch mal irgendwann was aufwendigeres programmiert und gepostet, ist aber glaub ich schon recht lange her.
    Edit: Habs gefunden

  • Da gibts ne schöne Funktion für: eval


    OK, da wäre meine Methode (schreiben in Datei, includen dieser) überflüssig. Aber einen Rechner kann man so nicht programmieren, zumindest nicht mit meinem Ansatz:

  • Ich meinte es eigentlich anders...:


    Ich hatte irgendwo noch was mit ner while-Schleife eingebaut, kann aber im Moment nicht auf den Original-Quelltext zugreifen... Ist sicherlich auch noch verbesserungsfähig :)


    Funktioniert natürlich nur so lange, wie man nur eine einfache Operation hat (Zahl1 RECHNOPERATOR Zahl2). Mit ein bisschen Rumgetrickse kriegt man das aber bestimmt noch hin :rolleyes:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!