PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   String nicht gleich Sting (eval) (https://www.php-resource.de/forum/php-developer-forum/106569-string-nicht-gleich-sting-eval.html)

Shrinker 08-04-2019 16:12

String nicht gleich String (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.

h3ll 08-04-2019 17:18

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.

Shrinker 09-04-2019 14:42

Schade das immer gleich mit dem :teach: 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.

chorn 10-04-2019 09:26

Zitat:

Zitat von Shrinker (Beitrag 675578)
Schade das immer gleich mit dem :teach: 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.

SysOp 12-04-2019 14:08

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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:11 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG