String nicht gleich Sting (eval)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.
    Last edited by Shrinker; 08-04-2019, 15: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.

    Comment


    • #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.

      Comment


      • #4
        Originally posted by Shrinker View Post
        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.

        Comment


        • #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.
          Last edited by SysOp; 12-04-2019, 13:25.

          Comment

          Working...
          X