Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Filtrowanie danych
Forum PHP.pl > Forum > Przedszkole
altar
Witam,

Mam problem tego rodzaju.
Wysylam 3 zmienne z formularza, metoda POST do skryptu PHP. Skrypt PHP ma przefiltrowac te zmienne. I tak, ma przepuscic je tylko jesli sa to cyfry/liczby, ale nie 0(zero) i nie ulamki, np 1.25, w kazdej innej sytuacji ma zatrzymac, nawet jesli uzytkownik w formularzu nie wpisze nic, czy spacje lub inny znak tego typu.

Probowalem roznych funkcji i serio nic mi nie wychodzi.
Podpowiedzcie prosze jak to zrobic.

Pozdrawiam.
Crozin
Pokaż jak próbowałeś i napisz co było nie tak.
altar
No np tak:

  1. ...
  2. if(!filter_var($zmienna1, FILTER_VALIDATE_INT))
  3. {
  4. echo 'stop';
  5. }elseif (!filter_var($zmienna2, FILTER_VALIDATE_INT))
  6. {
  7. echo 'stop';
  8. }elseif (!filter_var($zmienna3, FILTER_VALIDATE_INT))
  9. {
  10. echo 'stop';
  11. }
  12.  
  13. echo 'OK';
  14.  


no i tutaj jest zle jesli w formularzu np jedno z pol zostawie puste.

probowalem innych funkcji, ale w sumie caly czas chodzi o to samo, czyli ze zle dziala jesli np jedno z pol zostawie puste.
thek
Po pierwsze to źle podchodzisz do sprawy. Teraz masz 3 zmienne, a co jeśli nagle będziesz miał ich 20? Inna sprawa to fakt, że Ty nie sprawdzasz czy liczba jest zerem lub znakiem pustym. Poza tym skąd wiesz czy przy zmiennych podczas wyciągania z tablicy $_POST by zapisać jako $zmienna nie robisz jakiegoś byka? Ogólnie filter_var to dobre podejście, ale nie wiemy co wokół się dzieje. Może to tam jest problem. No i pamiętaj, że funkcja ta ma różne działanie, zależne od wersji.
Pyton_000
dla INT starczy
  1. if((int)$zmienna > 0)
altar
Dziekuje bardzo za podpowiedz o (int), jak zwykle rozwiazanie okazalo sie banalne, zrobilem tak i dziala.

  1.  
  2. $zm1 = (int)$_POST['zm1'];
  3. $zm2 = (int)$_POST['zm2'];
  4. $zm3 = (int)$_POST['zm3'];
  5.  
  6. $ilosc = 0;
  7. $ilosc = $zm1 + $zm2 + $zm3;
  8. if($ilosc == 0)
  9. {
  10. echo "Cos nie tak";
  11. echo "<p><a href=\"index.html\">Wroc do poprzedniej strony</a></p>";
  12. }
  13.  
  14. if($zm1 > 0)
  15. echo "Zm1: ".$zm1."<br />";
  16. if($zm2 >0)
  17. echo "Zm2: ".$zm2."<br />";
  18. if($zm3 >0)
  19. echo "Zm3: ".$zm3."<br />";
  20.  
  21.  


Mam jednak pytanie co zrobic jesli tych zmiennych mam 20 czy 50? Czy, ze tak to nazwe, w nowoczesnym programowaniu takie rozwiazanie jest ok? Jesli nie, to jak nalezy to rozwiazac?
Turson
Zamiast tworzyć x zmiennych typu $zmienna1 $zmienna2 $zmienna3... lepiej wrzucać dane do tablicy
altar
Oczywiscie ze lepiej pracowac na tablicy. Dlaczego we wszystkich ksiazkach i kursach, autorzy proponuja wrzucanie $_POST'ow czy $_GET'ow to tak zwanych krotkich nazw zmiennych? Z tego powodu nawet nie przyszlo mi do glowy ze lepiej zostawic to w tablicy $_POST i pracowac na niej.

  1.  
  2. $wynik;
  3.  
  4.  
  5. if(empty($_POST)){
  6. echo "cos nie tak";
  7. echo "<p><a href=\"index.html\">Wroc do poprzedniej strony</a></p>";
  8. }
  9.  
  10. foreach($_POST as $key => $value){
  11. $valueInt = (int)$value;
  12.  
  13. if($valueInt !== 0){
  14. $wynik[] = (int)$valueInt;
  15. echo $key.": ".$valueInt."<br>";
  16. }
  17. }
  18.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.