ForumCała strona

Nawigacja

Aktualnie online

Gości online: 16

Użytkowników online: 0

Łącznie użytkowników: 25,397
Najnowszy użytkownik: Lyokoheros

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

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

khaman
08.04.2025 12:11:31
Happy Ramadan JazOOn Smile

JazOOn
06.04.2025 00:03:11
szczesliwego nowego roku

sferahost
28.02.2025 21:31:55
Tak, "zesrało" się kodowanie. Przyznaję, za dużo rzeczy na raz a do tego jeszcze przeziębienie.

panicze
28.02.2025 20:50:22
Ten serwer co reklamuję się na stronie, to jest dla mnie anty-reklamą Źle

Pieta
28.02.2025 19:07:47
Uuu. Coś się kodowanie strony wysypało Sad

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 01.05.2025 12:42:41
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