nowy_pehapowiec
22.09.2009, 07:59:50
Przekazuje w adresie wartość zmiennej id=123. Po czym sprawdzam czy to jest integer
if( isset( $_GET['id'] ) && is_integer( $_GET['id'] ) )
i okazuje się, że nie. Ale jak dam is_numeric to przechodzi. Czemu?
pozdro
nospor
22.09.2009, 08:03:48
no przeciez masz to napisane w manualu!
http://pl2.php.net/manual/pl/function.is-int.phpCytat
Find whether the type of a variable is integer
http://pl2.php.net/manual/pl/function.is-numeric.phpCytat
Finds whether a variable is a number or a numeric string
ps: wszystko co przychodzi z GETa czy POSTA jest tekstem
thek
22.09.2009, 08:05:49
Zmienne GET zawsze są przesyłane jako wartość typu string. A więc jeśli wykonasz na tym sprawdzenie to system widzi nie 876 ale "876". Is_numeric zobaczy to jako wartość numeryczną zapisaną jako string, is_integer uzna za string i wywali false
cojack
22.09.2009, 13:20:52
Wywołaj rzutowanie niejawne bo jawnego w php nie ma z stringu na int za pomocą (int), jeżeli jest numerci to nie stracisz na rzutowaniu, jeżeli nie jest dostaniesz 0, false. Czyli rzutowanie stratne.
nospor
23.09.2009, 11:50:07
Cytat
jeżeli nie jest dostaniesz 0, false.
No nie do konca...
$str = '123nienumeric';
$int = (int)$str;
$str = 'nienumeric123';
$int = (int)$str;
Cytat
123nienumeric da nam 123
nienumeric123 da nam 0