is_int and GET or POST

Посмотрите на Django Poor Man's Cron, который является приложением Django, которое использует спам-роботы, роботы с индексированием поисковых систем и аналогичные для регулярного выполнения запланированных заданий

См.: http: // code.google.com/p/django-poormanscron/

13
задан Levi Morrison 8 February 2012 в 00:32
поделиться

5 ответов

Почему is_int всегда возвращает false?

Потому что $ _ GET ["id"] - это строка, даже если она содержит число.

Ваши варианты:

  • Используйте фильтр расширение. filter_input (INPUT_GET, "id", FILTER_VALIDATE_INT) вернет целочисленную переменную, если переменная существует, не является массивом, представляет собой целое число и это целое число находится в допустимых пределах. В противном случае он вернет false .

  • Принудительно преобразовать его в целое число (int) $ _ GET ["id"] - вероятно, это не то, что вы хотите, потому что вы не можете должным образом обрабатывать ошибки (например, "id" не является числом)

  • Используйте ctype_digit () , чтобы убедиться, что строка состоит только из чисел и, следовательно, является целым числом - технически это возвращает true также с очень большими числами, выходящими за рамки int , но я сомневаюсь, что это будет проблемой. Однако обратите внимание, что этот метод не распознает отрицательные числа.

Не используйте:

  • is_numeric () , потому что он также распознает значения с плавающей запятой (1.23132)
39
ответ дан 1 December 2019 в 18:12
поделиться

Потому что переменные HTTP всегда либо строки, либо массивы. А элементами массивов всегда являются строки или массивы.

Вам нужна функция is_numeric , которая вернет истину для «4» . Либо так, либо преобразование переменной в int $ foo = (int) $ _GET ['id'] ...

2
ответ дан 1 December 2019 в 18:12
поделиться

Потому что $ _GET - это массив строк.

Чтобы проверить, содержит ли параметр get целое число, вы должны использовать is_numeric ()

0
ответ дан 1 December 2019 в 18:12
поделиться

Потому что $ _ GET ['id'] - это строка , как и другие части строки запроса. Вы нигде не конвертируете его в целое число, поэтому is_int вернет false.

0
ответ дан 1 December 2019 в 18:12
поделиться

Вероятно, он хранится в виде строки в $ _GET, приведите его к типу int.

0
ответ дан 1 December 2019 в 18:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: