![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 23.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cześć!
Zacząłem niedawno studiować podręczniki do php. W jednym z podrozdziałów znalazłem skrypt, który obliczał wartości funkcji kwadratowej. Analizując go postanowiłem napisać własny, ale odnośnie funkcji liniowej - nie ma właściwie tam za dużo liczenia, ale nie w tym rzecz. utowrzyłem formularz w formie $_POST, który pobiera parametry a i b. Następnie napisałem skrypt, który podstawia parametry a i b pod wzór y = ax + b w zależności od tego jakie wartości przyjmują dane parametry. I tutaj nachodzą mnie wątpliwości, ponieważ mocno wydaje mi się, że troszkę oszukiwałem. Nie potrafiłem jeszcze innej metody zastosować Rzeczą której nie rozumiem to skrypt sprawdzający czy obie wartości a i b są liczbami. Dlaczego skrypt nie uznaje liczb ujemnych? -2, -3 etc. ? Przez znak "-" ? Wadą skryptu jest napewno to, że można mu sprzedać każdą ciemnotę - podstawić jakieś literki i inne wyrażenia z kosmosu i przyjmie je jako swoje. Skrypt sprawdzający czy są liczbami jest - wydaje mi się, że wystarczyło by dodać odpowiednią instrukcję, żeby nie przepuszczał żadnych innych znaków poza literami, ale z kolei gdybym tak zrobił, to nie akceptowałby mi liczb ujemnych. Prosze o wskazanie ewentualnych błędów w kodzie, albo nieprawidłowych sformułowań. Proszę o wskazówki i naprowadzenia, jak poprawić moje oszustwo, albo utwierdzić mnie w tym, że to "dobre oszustwo" i było to całkiem logiczne posunięcie : ) Dzięki i pozdrawiam PS. niżej zamieszczam cały kod i link gdzie można zobaczyć jak skrypt działa w rzeczywistości. http://dhost.info/mampatent/xyz/index.php CODE y=ax+b
<html> <body> <form method="POST" action="index.php"> <p><label>Podaj parametr "a": <input type="text" name="a"/></label></p> <p><label>Podaj parametr "b": <input type="text" name="b"/></label></p> <p><input type="submit" value="wyślij"/><input type="reset" value="wyczyść"/></p> </form> <?php //1 - parametry a,b if (is_numeric($_POST['a'] & $_POST['b'])) { echo 'oba parametry są liczbami<br/><br/>'; } else { echo 'jeden z parametrów nie jest liczbą <br/><br/>'; } $a = $_POST['a']; // parametr a $b = $_POST['b']; // parametr b $x = 'x'; $znak = '+'; // Założenia parametru b i zmiany zmiennych if ($_POST['b'] > 0) // jeżeli b > 0 - znakiem we wzorze będzie '+' { $znak = '+'; } elseif ($_POST['b'] == 0) // jeśli b == 0 nie wyświetli się ani znak, ani wartość parametru b = 0 { $znak = ' '; $b = ' '; } elseif ($_POST['b'] < 0) // jeśli b < 0 nie wyświetli się żaden znak { $znak =''; } else { $znak = '-'; } // Założenia parametru a i zmiany zmiennych if($a > 1) { $x = 'x'; //jeśli a > 1 - x wyswietlany obok parametru } elseif($a < 0) // jeśli a < 0 - x wyswietlany { $x = 'x'; } elseif($a == 1) // jeśli a == 1 - nie wyswietlamy 'x' { $a = ''; } else { $a = ''; $x = ''; $znak = ''; } if($a == 0 && $b == 0) { $a = 0; $b = 0; $x = ''; $znak = ''; $funkcja = $a + $b; } else { $funkcja = $a. $x. $znak. $b; } echo 'wzór twojej funkcji to: <font color="red">y = ' .$funkcja.'</font>'; |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Ja bym dał:
-------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
A ja bym stworzył własną funkcję, bo is_numeric ma swoje wady.
Moja funkcja akceptuje zarówno kropkę jak i przecinek jako separator zmiennoprzecinkowy, dlatego dla dalszej obróbki należy zamienić ewentualny przecinek na kropkę: |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
A ja bym zastosował Data Filtering (zwłaszcza funkcję filter_var_array() w połączeniu z Sanitization filters). Jak się już uczy to niech użyje nowych narzędzi.
-------------------- Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 23.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
niestety mój dzisiejszy wakacyjny wyjazd przerwie moją naukę php na jakiś czas i niestety nie będę mógł już wypróbować jak działają zaprezentowane przez was rozwiązania. Tak czy owak, dziękuję bardzo za podane przez was warianty upgrade'u mojego skryptu : )
pozdrawiam Listonoszek |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:18 |