Проверьте, отправлен ли элемент формы, но пустой с помощью PHP - PullRequest
0 голосов
/ 22 февраля 2012

Я хотел бы разделить две вещи.

Если отправлено $_POST["something"], НО пусто.

ИЛИ

Если $_POST["something"] не было отправлено.

Есть ли способ?

Ответы [ 5 ]

4 голосов
/ 22 февраля 2012

У вас может возникнуть соблазн использовать empty(), но он взорвется вам в лицо, если ваши возможные значения включают 0. Лучше всего использовать что-то вроде:

if (isset($_POST['something'])) {
   // the form field was sent ...
   if ($_POST['something'] === '') {
      // the form field was sent, but is empty
   }
}

Это работает, поскольку ВСЕ данные, поступающие из суперглобальных переменных _GET / _POST / _REQUEST, являются строкой, независимо от того, является она числом или нет.

2 голосов
/ 22 февраля 2012

взгляд в сторону isset и empty.

http://php.net/manual/fr/function.isset.php

http://php.net/manual/fr/function.empty.php

Редактировать: комментарии ниже верны.Пустой должен использоваться для пустых строк, а не для числовых значений, значений с плавающей запятой или нуля в строке.Однако вот функция, если вам нужно принять их как допустимые значения:

function is_blank($value) {
    return empty($value) && !is_numeric($value);
}
2 голосов
/ 22 февраля 2012

Вы хотите использовать isset()

if (isset($_POST["something"])){
    echo "The Post Variable 'something' was posted";
    if (strlen($_POST["something"])==0)
        echo "The Post Variable is blank";
    else
        echo "The Post Variable Contains ".$_POST['something'];
}
0 голосов
/ 22 февраля 2012

я использую функцию php isset (), чтобы проверить, был ли отправлен POST или нет

http://php.net/manual/en/function.isset.php

0 голосов
/ 22 февраля 2012

if ($ _POST ["что-то"]) вернет true, если есть такое поле

if $ _POST ["что-то"] == "" сделает все остальное

...