PHP правильно проверяет, является ли переменная записи пустой

0

Каков правильный способ проверить, является ли переменная $ _POST ['var'] пуста?

Например, скажем, у меня есть страница с формой, которая требует проверки на стороне клиента и на стороне сервера, и если какая-либо проверка не выполняется, ошибки отображаются на ярлыках формы. Эти же ярлыки будут использоваться для отображения сообщений об ошибках либо с отказом на стороне клиента, либо с ошибкой на стороне сервера.

Это означает, что в ярлыке мне нужно будет сделать что-то вроде этого:

<?php
if (isset($_POST['var'])) {

    echo $_POST['var'];
}
else {

    echo 'Please ensure you have entered your details';
}

?>

Однако я слышал, что неправильно проверять, установлена ли переменная $ _Post, если существует вероятность, что она пуста?

Теги:

4 ответа

3
Лучший ответ

Эта ссылка может быть полезна: https://www.virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null/

Используйте empty функцию, чтобы проверить, есть ли что-то переменное:

<?php
if (isset($_POST['var']) && !empty($_POST['var'])) {
    echo $_POST['var'];
}
else {
    echo 'Please ensure you have entered your details';
}
?>
0

Вот возможное решение.

if (isset($_POST['var']))
{
    if (!empty($_POST['var']))
    {
        echo $_POST['var'];
    }
    else
    {
        echo 'Please ensure you have entered your details';
    }
}
else
{
    echo 'Please ensure you have entered your details';
} 

Почему !empty() недостаточно?

Похоже, что empty() не генерирует никаких предупреждений, если переменная не задана. Поэтому вам необходимо сначала проверить, существует ли переменная. empty() кажется, по существу, равным !isset($var) || $var == false !isset($var) || $var == false как указано в документах [1].

[1] http://in1.php.net/empty

0

Сначала проверьте с isset() чтобы убедиться, что поле установлено. Но isset() не подтверждает, что переменная POST имеет непустые данные. Чтобы обеспечить использование empty()

<?PHP
if(isset($_POST['var']) && !empty($_POST['var'])) {
    echo $_POST['var'];
}
?>

Обратите внимание, что всегда проверяйте isset() перед проверкой пустого, иначе его совершенно бессмысленно проверять, существует ли какая-либо переменная или нет, после проверки ее пустой или нет.

  • 0
    Не echo $var; , но echo $_POST['var']; :)
0

Вы можете использовать:

if(isset($_POST['var']) && !is_null($_POST['var']) && !empty($_POST['var']))
{
echo $_POST['var'];

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню