ForumCała strona

Nawigacja

Aktualnie online

Gości online: 14

Użytkowników online: 0

Łącznie użytkowników: 25,393
Najnowszy użytkownik: Assassin

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

JazOOn
06.12.2024 23:45:46
Amen

Zbigniew@
17.11.2024 11:33:24
Nie ten grzeszy kto pije, ale ten, kto się nie upije.

JazOOn
16.11.2024 20:46:18
tja

Zbigniew@
15.11.2024 18:58:17
Kto pije, ten nie bije.

JazOOn
31.10.2024 20:49:47
Kto pije?

Pobierz nową wersję
Pobierz podręcznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Zobacz temat

 Drukuj temat
Intval czy is_int? Wątpliwości dotyczące zabezpieczeń
Szapko
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.
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Zwraca Błąd - aa i wszystko jest ok.

2.
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Zwraca OK - 1aa, niby ok, ale jakbym zapisywał tą liczbę do bazy, to by zapisała się jako 1aa?

3.
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Błąd - 1aa, więc informuje dobrze i zapobiegło by dalszej pracy skryptu.
Jednak, gdy dam:
4.
Pobierz kod źródłowy  Rozwiń Kod źródłowy

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 22.12.2024 16:52:25
Pan Kontekstualny

Postów: n^x
Data rejestracji: Zawsze

Polecamy hosting SferaHost.pl
IP: localhost  
Seba0p
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.

1.
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Zwraca Błąd - aa i wszystko jest ok.


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.
Pobierz kod źródłowy  Rozwiń Kod źródłowy

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.
Pobierz kod źródłowy  Rozwiń Kod źródłowy

Błąd - 1aa, więc informuje dobrze i zapobiegło by dalszej pracy skryptu.


Zgadza się. Zwraca wartość false.

Jednak, gdy dam:
4.
Pobierz kod źródłowy  Rozwiń Kod źródłowy

To też mam Błąd - 1. Czy może ja źle to rozumiem, czy może też 1 to nie liczba. :/


Pobierz kod źródłowy  Rozwiń Kod źródłowy


Jest typu string, a nie integer - funkcja zwraca false.

Liczbą całkowitą jest:

Pobierz kod źródłowy  Rozwiń Kod źródłowy

Edytowane przez Seba0p dnia 20.08.2010 22:46:20
 
http://seba0p.pl
Przejdź do forum:
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl