String nicht gleich Sting (eval)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • String nicht gleich Sting (eval)

    Hallo zusammen,


    ich hoffe ich bin hier richtig.


    Ich habe in einer Datenbank eine If Anweisung abgegelgt.
    Diese Zerlege ich und möchte Sie ausführen mit eval.


    String in der DB
    PHP-Code:
    "if((5-2)>0.0){$res=3-9-0.025;}else{$res=0.0;}
    Ich lese nun den String aus der DB und zerlege Ihn:
    PHP-Code:
    $bedingung strval(substr($return_value[$line],3,strpos($return_value[$line],"{")-4)); 
    $bedingung enthält "(5-2)>0.0"


    wenn ich das nun in diese If abfrage einbaue:
    PHP-Code:
    $ausgabe 'if('.$bedingung.'){
                    echo "Bedinung ist Wahr";
                    }else{
                    echo "Bedingung ist Falsch";
                    }'
    ;
                echo 
    "Bedingung Ergebis ->:<br>";
                eval(
    $ausgabe);
                echo 
    "<br>Ende <br>"
    gibt mir eval garnichts zurück.


    wenn ich aber den String direkt zuweise

    PHP-Code:
    $bedingung "(5-2)>0.0"
    Funktioniert es.


    Ich steh total auf dem schlauch, vielleicht seh ich den wald vor laute Bäumen auch nicht. Dr. Google half leider auch nicht.
    Zuletzt geändert von Shrinker; 08.04.2019, 16:26.

  • #2
    eval() ist in 99,9999% der Fälle das falsche Werkzeug. PHP-Code zu zerlegen und mit eval() auszuführen klingt nach einer ziemlichen Murkslösung. Ich würde mal ein Schritt zurück machen und eine sinnvollere Lösung überlegen.

    Kommentar


    • #3
      Schade das immer gleich mit dem auf eine gezeigt wird... das sollst du nicht das muss anders... statt konstuktiv zu helfen... ich weiß das es sicher andere wege gibt das Pferd neu aufzuziehen nur ist das hier nicht die Fragestellung. Mir gehts daraum zuverstehen warum hier String nicht gleich String ist oder was ich falsch mache.

      Kommentar


      • #4
        Zitat von Shrinker Beitrag anzeigen
        Schade das immer gleich mit dem auf eine gezeigt wird... das sollst du nicht das muss anders... statt konstuktiv zu helfen...
        Schade dass du nicht verstehst, dass solche Fehler anzuprangern und zur Vermeidung zu animieren schon konstruktive Kritik ist. Wenn du schon die falschen Fragen stellst, erübrigt sich eine Antwort.

        Kommentar


        • #5
          Ich gebe meinen Vorpostern zunächst einmal recht. eval ist böse und schreit geradezu danach als Sicherheitsloch missbraucht zu werden!

          Nichts desto trotz, du zeigst nicht, wie du zu diesem Teil hier kommst!
          PHP-Code:
          "if((5-2)>0.0){$res=3-9-0.025;}else{$res=0.0;}
          Die Doublequotes sind hier Falsch, bzw du musst escapen, $res wird interpretiert und dein String so wie er da steht wird fehlerhaft.

          entweder du setzt entsprechende \ oder stellst das ganze einfach unter Singlequotes, dann sollte Wahr herauskommen
          PHP-Code:
          // $string = "if((5-2)>0.0){\$res=3-9-0.025;}else{\$res=0.0;}"; // oder

          $string 'if((5-2)>0.0){$res=3-9-0.025;}else{$res=0.0;}';
          $bedingung strval(substr($string,3,strpos($string,"{")-4));
          echo 
          $bedingung;

          $ausgabe 'if('.$bedingung.'){
                          echo "Bedinung ist Wahr";
                          }else{
                          echo "Bedingung ist Falsch";
                          }'
          ;
                      echo 
          "Bedingung Ergebis ->:<br>";
                      eval(
          $ausgabe);
                      echo 
          "<br>Ende <br>"
          funktioniert.
          Zuletzt geändert von SysOp; 12.04.2019, 14:25.

          Kommentar

          Lädt...
          X