Проверка заполнения поля формы с помощью empty().

Forever

Новичок
Гуглил сейчас по поводу проверки формы на заполнение, и на многих форумах пишут, что
для этого существует функция empty().

Но ведь она, эта функция, считает поле с нулем за пустое, а поле, где кроме пробелов ничего нет, за
заполненное...
Второй случай можно решить с помощью trim(), но, мне кажется, это полумера, ведь не в каждом поле нужно чистить "левые" пробелы .
В случае с нулем вообще дичь ) Я преставляю, как сижу на сайте правоохранительных органов, там в форме есть поле "Введите количество Ваших уголовных нарушений". И ты такой вводишь 0, а тебе хопааааа, выдают: "Вы не заполнили количество нарушений) .

Очевидно , что я чего-то не понимаю, и эти рассуждения выглядят смешно, но объясните пожалуйста, как решить эти проблемы с empty , и если не его использовать, то что?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
ты ожидал, что логика работы твоего приложения будет "из коробки в языке" доступна? И что ты одной функцией покроешь все свои запросы?

Есть просто набор правил, то, как язык будет обрабатывать данные, и ты уже должен решить как ты хочешь работать.
Проверять ли данные через empty(), или через isset(), или придумать какие-то более сложные правила валидации.

Берешь книгу по языку, читаешь. После определяешь с логикой приложения, тем, как оно будет работать. Потом пишешь под логику работы код.
 

Vladson

Сильнобухер
1 - Не советую так делать, но я проверяю поля без всяких empty а с помощью strlen, типа если длинна строки больше нуля символов, то логично что она не пустая
2 - trim это не полумера, а вполне себе мера. Если обрамляющие пробелы не являются допустимыми в силу того что это например имя, значит использую, если это например пароль а стало быть пробелы (и все другие символы) допустимы то не использую.
3 - По форме о нарушениях. Есть такая штука как типы данных. Если ты ввёл в форму 0 то придёт не цифра 0 а строка 0, и стало быть пустым поле считаться не будет.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@Vladson, дружочек, а выполни ка ты код:

PHP:
var_dump(empty('0'));
Это вот на это вот...
Если ты ввёл в форму 0 то придёт не цифра 0 а строка 0, и стало быть пустым поле считаться не будет.
 

AnrDaemon

Продвинутый новичок
@Vladson, дружочек, а выполни ка ты код:

PHP:
var_dump(empty('0'));
Это вот на это вот...
Он имел в виду, что с точки зрения пользователя (и, вероятно, бизнес-логики) "0" вполне может быть корректным (непустым) значением поля формы. Не с точки зрения языка.
 

antson

Новичок
Партнер клуба
@Forever, у empty c моей точки зрения есть один замечательный плюс
if(!empty($_POST['pole']))
работает сразу как связка
для целых
if(isset($_POST['pole'] && intval($_POST['pole'])>0))
или для строк
if(isset($_POST['pole'] && $_POST['pole'])<>''))
т.е. автоматом проверяется существование , что позволяет избежать notice при полном уровне логирования ошибок .
 
Сверху