|
Die letzten 5 Postings in diesem Thema » Alle anzeigen
von subjective |
Besser |
von kpu666 |
hi nochma,
so klappts dann mit den Cases:
<?php
$op = $_GET['optn'];
$zahl1 = $_GET['zahl1'];
$zahl2 = $_GET['zahl2'];
switch ($op) {
case "+":
$erg = $zahl1+$zahl2;
echo $erg;
break;
case "-":
$erg = $zahl1-$zahl2;
echo $erg;
break;
case "*":
$erg = $zahl1*$zahl2;
echo $erg;
break;
case "/":
$erg = $zahl1/$wert2;
echo $erg;
break;
}
?>
Den anderen Mist braucht Ihr nicht mehr zu beantworten:
eval() liest strings als Code und braucht Reihenfolge um zu operieren.
zB +0 1 ist für php keine vernünftige Rechnung und daher wird das verworfen.
Der Operator muss ja dann hier in der Mitte notiert sein.
richtig?
gruese
|
von kpu666 |
hi,
ich hab das eh noch nicht richtig verstanden.
kannste mir die beiden Zeilen nochma erklären?
$erg=eval("return($zahl1 $op $zahl2);");
echo $zahl1.$op.$zahl2." = ".$erg;
Was macht return da? Woher weiss eval, welche Variable ($zahl1 $op $zahl2) als PHP Code/Operator zu interpretieren ist?
echo $zahl1.$op.$zahl2." = ".$erg;
Ist das erst die Rechnung? Und sagt die "$erg=eval("return($zahl1 $op $zahl2);");" -Zeile NUR, das in diesen Feldern ($zahl1 $op $zahl2) mögliche Operatoren versteckt sind?
Ich hatte das mit eval() richtig geschrieben, aber leider nicht verstanden. :o)
Danke schon im Voraus
karna
|
von subjective |
Klasse und schon kann ich beliebigen PHP-Code über das Script ausführen. Mit eval() muss man extrem vorsichtig sein.
Besser Wäre es, wenn du zum einen die beiden Werte prüfst und eventuell zwangsweise in Zahlen konvertierst und zum anderen den Operator mit einem "switch" abfragst und die Operationen einzeln im Quellcode schreibst. Somit wird eval() überflüssig.
|
von kpu666 |
So klabbet, wenn die GET Variblen aus der Form auch so heissen:
[code
<html>
<head>
<title>Rechnung</title>
</head>
<body>
<?php
$op = $_GET['optn'];
$zahl1 = $_GET['zahl1'];
$zahl2 = $_GET['zahl2'];
$erg=eval("return($zahl1 $op $zahl2);");
echo $zahl1.$op.$zahl2." = ".$erg;
?>
</body>
</html>
[/code] |
|
|
|