Avatar billede webstuff Nybegynder
16. januar 2006 - 16:01 Der er 16 kommentarer og
1 løsning

Lommeregner regner ikke sammen

Jeg sidder og prøver at lave en lomme regner, men den virker ikke optimalt.. Eftersom den ikke regner sammen, men bare udskriver.
Her er koden:
------------------------------------------------------------------
<?
$antal = strlen($_POST[felt]);
$tael = explode(" ", $_POST[felt]);
for($i = 0 ; $i <= $antal ; $i++){
$resultat = $resultat . $tael[$i];
}
echo "<b>Resultat:</b> <u>".$resultat."</u>";
?>
------------------------------------------------------------------
Avatar billede barklund Nybegynder
16. januar 2006 - 16:21 #1
Kan man indtaste et vilkårligt regnestykke og så få det udregnet?

Umiddelbart kan du bare bruge eval:

echo "<b>Resultat:</b> <u>".eval($_POST['felt'])."</u>";

Det er dog ret farligt - for så kan man skrive hvad som helst og få det eksekveret på din server :)

--
Morten Barklund
Avatar billede webstuff Nybegynder
16. januar 2006 - 16:39 #2
jeg har bare et <input type="text" name="felt"> som man kan skrive f.eks (8*2)+2 i, og så skal man kunne få regnet det ud..
Men kan ikke få det til at virke ordentligt..
Avatar billede webstuff Nybegynder
18. januar 2006 - 13:05 #3
Hvis jeg f.eks skrive det her i feltet:

8+8

og trykker på udreng, så skriver den det er:

Resultat: 8+8
Avatar billede barklund Nybegynder
18. januar 2006 - 13:16 #4
Også hvis du bruger eval, som jeg har foreslået herover?
Avatar billede webstuff Nybegynder
18. januar 2006 - 13:54 #5
Så begynder den bare at brokke sig :)
Avatar billede barklund Nybegynder
18. januar 2006 - 13:57 #6
Som sagt, så er en sådan parsing-funktion ikke nem at lave. Hvis eval ikke kan finde ud af det (og det kan den godt, men så skal du ud i noget rod), så skal det laves manuelt, og det er svært.

Prøv med:

eval("return ".$_POST['felt'].";")

deromkring...

Dog, eval er meget farlig at bruge til dette!

--
Morten Barklund
Avatar billede gentoo2005 Nybegynder
18. januar 2006 - 14:00 #7
og så skal vi bare lige lære eval() at regne med integraler, og tredjegrads vektorer, så er alle glade.

Jeg skulle mene at PEAR har en math class, på pear.php.net/math, men siden lader til at være nede.

Til advanceret matematik, kan du kigge på colder's math deritive http://www.colder.ch/repository/php/Math_Derivative/
Avatar billede webstuff Nybegynder
18. januar 2006 - 14:03 #8
Er der ikke nogen som kan gøre sådan at scriptet udfører regnestykket i stedet for bare at udskrive det?
Det sådan set bare det jeg vil frem til :-)
Men det er måske ikke muligt i den måde jeg gør det på??
Avatar billede barklund Nybegynder
18. januar 2006 - 14:17 #9
Du skal parse strengen til at matematisk udtryk. Dette gøres ikke "bare", men via en eller anden parser. eval() kan de mest grundlæggende ting samt bruge alle php's funktioner, men skal du have mere, skal du bruge for eksempel en af de to ting, som gentoo2005 smed et link til herover.
Avatar billede webstuff Nybegynder
18. januar 2006 - 14:29 #10
Nu virker det barklund..
Men jeg har brugt eval()
Er det en meget dum idé, eller kan den godt bruges uden at man får bank?
Avatar billede barklund Nybegynder
18. januar 2006 - 14:46 #11
Altså, jeg kan jo skrive unlink(__FILE__) og så slettes den fil, som udfører forespørgslen. Så det er ret dumt :)

Jeg kan også skrive alt muligt andet, så jeg får lavet filer, slettet din database, spammet en masse mennesker med mails og meget andet.

Så det er dumt, hvis andre skal kunne se det, men er det kun til dig selv og ikke offentligt tilgængeligt, kan det måske gå an.
Avatar billede webstuff Nybegynder
18. januar 2006 - 15:06 #12
Jeg prøvede at skrive "unlink(__FILE__)" og den slette ikke filen.
Udregningen var bare "<br>" ??

Jeg havde faktisk tænkt mig at det skulle være offentligt tilgængeligt :-)
Avatar billede barklund Nybegynder
18. januar 2006 - 15:23 #13
Man kan godt få den til at gøre ting, som du ikke ønsker, så du kan ikke bruge dette, hvis det skal være sikkert på nogen som helst måde. Vil du gøre det offentligt og sikkert, så kig på de to links, som gentoo2005 smed.
Avatar billede webstuff Nybegynder
18. januar 2006 - 15:25 #14
Okay.. jeg læser videre på det :-)
Men mange tak for hjælpen, lægger du et svar?
Avatar billede barklund Nybegynder
18. januar 2006 - 15:41 #15
Svar :)
Avatar billede webstuff Nybegynder
19. januar 2006 - 01:44 #16
Tak for hjælpen :-D
Avatar billede barklund Nybegynder
19. januar 2006 - 10:49 #17
Og tark for points
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester