PHP正确检查post变量是否为空

时间:2014-04-05 10:46:54

标签: javascript php html

检查$ _POST [' var']变量是否为空的正确方法是什么?

例如,假设我有一个页面,其表单需要客户端和服务器端验证,如果任何验证失败,则错误将显示在表单上的标签上。相同的标签将用于显示来自客户端验证失败或服务器端验证失败的错误消息。

这意味着在标签中我必须做这样的事情:

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

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

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

?>

但是我听说如果有可能它是空的,检查$ _Post变量是否设置是错误的?

4 个答案:

答案 0 :(得分: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';
}
?>

答案 1 :(得分:0)

首先检查isset()以确保该字段已设置。但isset()未确认POST变量是否为非空数据。确保使用empty()

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

请注意,在检查为空之前始终检查isset()否则在检查变量是否为空之后检查变量是否存在是完全没有意义的。

答案 2 :(得分:0)

您可以使用:

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

}

答案 3 :(得分: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()似乎基本等同于文档[1]中提到的!isset($var) || $var == false

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