Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Walidator liczb, Jak sprawdzacie wartosci podawane przez uzytkownikow URLe itp
seth-kk
post
Post #1





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

Ostrzeżenie: (0%)
-----


W jaki sposob sprawdzacie liczby pochodzace z plikow/$_POST/$_GET (podawane jako stringi) itp sa naprawde liczbami ktorych oczekujecie?
czy moze ograniczacie sie tylko do wykozystania wartosci wyplutych przez intval()lub floatval()?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
golaod
post
Post #2





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. (float)$_POST['liczba'];(int)$_POST['liczba'];
  3. ?>

Mi to w zupełności wystarczy
Go to the top of the page
+Quote Post
bigZbig
post
Post #3





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


is_numeric
Go to the top of the page
+Quote Post
Pawel_W
post
Post #4





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


masz jeszcze is_NaN();
Go to the top of the page
+Quote Post
seth-kk
post
Post #5





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

Ostrzeżenie: (0%)
-----


@golaod: rozumiem ze tylko rzutujesz
@bigZbig: is_numeric() nie odroznia liczb calkowitych od zmiennoprzecinkowych co moze byc problemem jesli kolejnym krokiem jest dodanie do bazy
@Pawel_W: is_NaN() nie dziala poprawnie jesli string zaczyna sie od liczby
interesuje mnie jaknajdokladniejsza weryfikacja ale jednoczesnie czytelnosc kodu gdyz nie pisze go tylko dla siebie
jak narazie ranking wyglada tak
  1. <?php
  2. $val==(string)(float) $val
  3. strcmp($val, (float) $val)==0
  4. ?>

jesli ktos uwaza ze przykladam zbyt duza wage do kodu to polecam "zagadke"
  1. <?php
  2. $a^=$b^=$a^=$b;
  3. ?>
Go to the top of the page
+Quote Post
golaod
post
Post #6





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


seth-kk podaj jakiś konkretny przykład tej doskonałości.

Zgodnie z bigZbig: is_numeric sprawdzi czy W OGÓLE jest liczbą, a następnie to już od Ciebie zależy, co zrobisz z tą informacją.
Skoro np. wprowadzasz do bazy float, a dostałeś int to robisz tylko number_format.
Jeśli jednak aż TAK bardzo zależy Ci na informacji czy to float czy nie to polecam wyrażenia regularne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. <?php
  2. if($val == (float) $val){
  3.  //jest to FLOAT
  4. }
  5. ?>
Go to the top of the page
+Quote Post
seth-kk
post
Post #8





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

Ostrzeżenie: (0%)
-----


@Crozin: jestes pewien?

prosciej jest pokazac problemy jakie niesie porownywania wartosci przez php
  1. <?php
  2. $a = '1.2a';
  3. $b = '1,2a';
  4. var_dump($a==(int)$a) //false
  5. var_dump($b==(int)$b) //true
  6. var_dump($a==(float)$a) //true
  7. var_dump($b==(float)$b) //true
  8. ?>
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
prosciej jest pokazac problemy jakie niesie porownywania wartosci przez php

To nie jest tylko problem PHP, ale wszystkich bibliotek bazujących na C.

float NIGDY się nie porównuje za pomocą operatora równości.
Go to the top of the page
+Quote Post
seth-kk
post
Post #10





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

Ostrzeżenie: (0%)
-----


na ogol tak choc php calkiem niezle radzi sobie z reprezentacja liczb zmiennoprzecinkowych
  1. <?php
  2. $a = 0;
  3. while($a<=1)
  4. echo ($a+=.001).'<br />';
  5. ?>

wypada bezblednie
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No ok, to nie przysparza problemów, ale ja napisałem o porównywaniu...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:05