Zobacz temat
Intval czy is_int? Wątpliwości dotyczące zabezpieczeń
|
|
Szapko |
Dodany dnia 20.08.2010 21:23:45
|
Bywalec Postów: 888 Pomógł: 66 Data rejestracji: 19.08.2007 19:49 |
Piszę właśnie wersję 2.0 mojego pierwszego poważniejszego skryptu i szukam pomocy przy zabezpieczeniu formularza. Otóż chcę sprawdzić czy dana wartość jest liczbą i jeżeli nie skrypt nie wykona dalszych poleceń. W książce, którą kupiłem jakiś czas temu na tema PHP i MySQL, znalzałem funkcję is_int(), która rzekomo miała sprawdzać czy zmienna jest liczbą i zwracać wartość TRUE lub FALSE. Nie działa jedna tak jak myślałem. Znalazłem też funkcję intval, która działa już bardziej po mojej myśli, jednak nadal efekt jest nie taki jak myślałem. A teraz nieco skryptu aby wyjaśnić o co chodzi. 1. Zwraca Błąd - aa i wszystko jest ok. 2. Zwraca OK - 1aa, niby ok, ale jakbym zapisywał tą liczbę do bazy, to by zapisała się jako 1aa? 3. Błąd - 1aa, więc informuje dobrze i zapobiegło by dalszej pracy skryptu. Jednak, gdy dam: 4. To też mam Błąd - 1. Czy może ja źle to rozumiem, czy może też 1 to nie liczba. :/ Edytowane przez khaman dnia 21.08.2010 17:33:19 |
|
|
Wścibski Gość |
Dodany dnia 24.11.2024 22:31:21
|
Pan Kontekstualny Postów: n^x Data rejestracji: Zawsze |
|
IP: localhost | |
Seba0p |
Dodany dnia 20.08.2010 22:43:29
|
Początkujący Postów: 127 Pomógł: 25 Data rejestracji: 24.07.2007 11:28 |
intval() konwertuje przekazaną wartość na typ integer i ją zwraca, a is_int() sprawdza czy jest ona liczbą całkowitą i zwraca true lub false. Jest "ok", ponieważ funkcja zwróciła 0. Typ string zamienia na 0 (wyjątek stanowi sytuacja, gdy na początku występuje cyfra/liczba). 2. Zwraca OK - 1aa, niby ok, ale jakbym zapisywał tą liczbę do bazy, to by zapisała się jako 1aa? Patrz poprzedni punkt. Na początku jest cyfra, więc została ona zwrócona. 3. Błąd - 1aa, więc informuje dobrze i zapobiegło by dalszej pracy skryptu. Zgadza się. Zwraca wartość false. Jednak, gdy dam: 4. To też mam Błąd - 1. Czy może ja źle to rozumiem, czy może też 1 to nie liczba. :/ Jest typu string, a nie integer - funkcja zwraca false. Liczbą całkowitą jest: Edytowane przez Seba0p dnia 20.08.2010 22:46:20 |
|
Przejdź do forum: |