![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 21.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Heh, trudno mi jakoś zdefiniować temat... :/ Prosiłbym o pomoc w napisaniu skryptu liczącego (kalkulator). Chodzi o to, żeby do jedengo inputa wprowadzić ciąg znaków "2+3*4-2", a skrypt php to obliczył. Podkreślam to ma być w jednym inpucie. Próbowałem tak:
ale nie wychodzi. PS. To działanie w pierwszej fazie musi być string'iem... . Z góry dzięki. Pozdrawiam. Ten post edytował batman 5.05.2008, 20:35:43
Powód edycji: Przenoszę na przedszkole
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
manual - eval()
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 1 Dołączył: 7.06.2007 Skąd: torun Ostrzeżenie: (0%) ![]() ![]() |
wprowadzasz poprostu tego stringa
$wynik=eval($string); |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 21.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
OK, już wszystko wiem.
THX, za szybką odpowiedź. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
hmm... A co jeżeli w pole formularza wpiszę np. coś takiego:
Kod unlink('skrypt.php'); Zapewne skrypt zwróci w wyniku 1 i już więcej nie uruchomi? Tak więc raczej ta metoda bezpieczna nie jest... -------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@l0ud to ze dane najpierw trzea przefiltrowac to chyba oczywiste, nieprawdaż? A jesli ktos o tym nie wiedzial to juz wie
![]() Tak wiec metoda sama w sobie jest ok, pod warunkiem ze najpierw dane zostaną zwalidowane. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wg. mnie jednak nie jest to dobry sposób do osiągnięcia tego celu.
Na razie załóżmy że podstawowe filtrowanie już jest - zezwalamy tylko na cyfry, + - * i /
Niestety, nie jest to takie proste (parse error) - więc kombinujemy:
Wygląda na to, że działa... Ale zbyt pewne nie jest:
Parse error. Nie mam pomysłu na proste sprawdzenie czy wyrażenie jest prawidłowe. Nawet zwykłe dzielenie przez 0 zwróci warning... -------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
na początek można zabezpieczyć się w ten sposób:
Ten post edytował Cezar708 5.05.2008, 22:15:33 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@l0ud odpowiednie wyrazenie regularne i daloby sie zapobiec Twoim przykladom.
Co do dzielenia przez zero to masz racje, tego nie wykryjemy ot tak sobie. Jesli ktoś ma czas i chec to moze pobawić się w ONP - Odwrotna Notacja Polska - jest to algorytm na wyliczanie takich działań. Bardzo fajny, swego czasu implementowałem go w Pascalu. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 11:29 |