isset PHP5是兼容性还是非兼性

时间:2016-02-24 11:43:15

标签: php

为什么我们将isset!empty一起使用? 是否必须使用它,因为isset检查变量是否设置,$_POST是已设置的超全局变量。

 <?php
    include 'Config.php';
    $email  = "";
    $mdp    = "";
    $e = array();
    if(isset($_POST))
    {
     if(!empty($_POST))
     {
      $email  = $_POST['adresse_email'];
      $mdp    = $_POST['motpasse'];
   ...

2 个答案:

答案 0 :(得分:2)

isset()检查变量是否存在,但不是它的内容。

您稍后使用empty()来检查它是否为空字符串。

在这种情况下,由于$_POST是一个数组,并且您没有说明从哪个位置选择值,empty()将检查数组是否包含任何位置。

Armen的评论所述,这两个验证毫无意义。您只需检查脚本的请求方法是否为POST

if ($_SERVER['REQUEST_METHOD'] === 'POST')

答案 1 :(得分:1)

在您的示例中,isset()用于检查$_POST超全局变量是否已设置,但它是冗余代码。 empty()已包含isset()的功能,但也包含更多功能。来自文档:

  

如果var存在并且具有非空的非零值,则返回FALSE。   否则返回TRUE。

     

以下内容被认为是空的:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

...所以它还会检查$ _POST数组中是否包含元素(不是空数组)。

对于简单的Web表单检查,使用!empty($_POST)比编写$_SERVER['REQUEST_METHOD'] === 'POST'更容易,但结果是相同的,如果请求不是通过POST进行的,则它们都不会匹配。

另外,在您的代码中,如果未定义索引(如果表单中未提交元素),您还可以在$ _POST元素上使用isset()来排除PHP发出的警告:

$email  = isset($_POST['adresse_email']) ? $_POST['adresse_email'] : '';
$mdp    = isset($_POST['motpasse']) ? $_POST['motpasse'] : '';