ForumCała strona

Nawigacja

Aktualnie online

Gości online: 5

Użytkowników online: 0

Łącznie użytkowników: 25,386
Najnowszy użytkownik: Hisfatt

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

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

Zbigniew@
28.04.2024 21:33:51
Nareszcie udało się .V9 Document checking completed. No errors or warnings to show.

JazOOn
27.04.2024 21:35:25
Jazda. Udało się. Firma rusza.

Zbigniew@
01.04.2024 12:28:45
Wszystkiego najlepszego z okazji świąt.

JazOOn
28.02.2024 19:25:31
ja zostałem przy fusionie ale nazywa się 360. Projektowanie i druk 3d...

MajsterBieda
25.02.2024 00:12:42
Ponad 20 lat .... tosz to sioook panie.... Grin

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 02.05.2024 23:34:10
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