为什么我们将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'];
...
答案 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'] : '';