2014-12-20 3 views
1

Безопасно предположить, что в

if (($i = (int)trim($_GET['user_input'])) != 0) { 
    // do stuff with $i 
} 

$i может только когда-либо быть целым?


Edit:

я теперь использовать:

if (ctype_digit($i = $_GET['user_input'])) { 
    // do stuff with $i 
} 
+0

Да, но если '$ _GET [ 'user_input'] 'является 'а' в качестве примера это 0. (Если бросок терпит неудачу) – Rizier123

+0

@ Rizier123 Вот почему я '! = 0'. Я хочу, чтобы только целые числа отличались от нуля. –

+1

Да, тогда ваше состояние работает! Итак, ваш вопрос ответил? – Rizier123

ответ

0

Так что, если ваш единственный вопрос, если это в любом случае int , то есть ответ:

Да

Но если приведение к междунар не удается (например, вход: 'a') $i просто 0

Пример:

ввода/вывод:

4  -> 4 
-5  -> -5 
"14" -> 15 
"a"  -> 0 
"!"  -> 0 
array() -> 0 

Side Примечание:

Если значение является облицовкой массива не удается, и вы получите сообщение об ошибке

+0

Может ли пользователь (то есть: посетитель моего сайта) отправить массив через GET ??? –

+0

@what Все, что клиентский сайт может манипулировать пользователем! Поэтому вся проверка должна быть серверной! Пользователь может даже изменить список выбора на текст, зарегистрированный – Rizier123

0

Проверить это

if(stripslashes(trim($_GET['user_input']))) > 0){ 
//your code Here 
} 
+0

НЕПРАВИЛЬНО! Если $ _GET ['user_input'] отрицательный, это не сработает! – Rizier123

+0

Это не очищает входные данные, что является цельной целью лить его как целое. –

+0

Теперь он чист? –

0
$i = intval($_GET['user_input']); 
if ($i != 0) { 
    // do stuff with $i 
} 

проверить это d ocumentation here

0

Если проверить целое, то

if(is_numeric($_GET['user_input']) && $_GET['user_input'] > 0) { 
//your code 
} 
+0

Я не хочу числа с плавающей запятой, или, по крайней мере, я хочу передать их в какое-то целое число. $ i должны быть полными целыми числами. Если я использую (int), то 1.2 превращается в 1, что приемлемо (лучше было бы ЛОЖЬ). –

+0

Итак, вы можете использовать функцию intval(), например: echo intval (42); // 42 echo intval (4.2); // 4 echo intval ('42 '); // 42 echo intval ('+ 42'); // 42 – Fortran

+0

НЕПРАВИЛЬНО! Если $ _GET ['user_input'] отрицательный, это не сработает! – Rizier123

Смежные вопросы