ForumCała strona

Nawigacja

Aktualnie online

Gości online: 8

Użytkowników online: 0

Łącznie użytkowników: 25,387
Najnowszy użytkownik: Tyka1125

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

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

JazOOn
14.05.2024 18:31:17
Znowu serwer down?

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...

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 18.05.2024 19:26:09
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