PHP - 如果除非指定了else,否则跳过条件语句

时间:2012-10-04 14:01:49

标签: php conditional

我创建了一个非常简单的登录页面,我在提交表单后验证PHP上的用户名和密码。

验证的第一步是检查用户名和密码是否为空,如果为空,我将用户发送回登录页面:

$e = $_POST['email'];
$p = $_POST['password'];


if($e == '' || $p == ''  || is_null($e) || is_null($p)){
    header('Location: login.php?e=missing');
}

事实证明,检查用户名和密码是否为空的if语句只有在我添加else语句时才有效:

$e = $_POST['email'];
$p = $_POST['password'];


if($e == '' || $p == ''  || is_null($e) || is_null($p)){
    header('Location: login.php?e=missing');
}else{

    //more validation
}

老实说,我的代码有效,我添加了else并解决了问题,但为什么??? 感谢。

5 个答案:

答案 0 :(得分:4)

$e = $_POST['email'];
$p = $_POST['password'];


if(trim($e) == '' || trim($p) == ''){
    header('Location: login.php?e=missing');
    exit(); // add this else it wont leave the page!
}else{

    //more validation
}

答案 1 :(得分:1)

if($e == '' || $p == ''){
    header('Location: login.php?e=missing');
}

您需要在标题行后添加exit();否则,处理将继续正常进行,并运行所有其余代码。

答案 2 :(得分:1)

您需要使用empty检查变量是否已设置,以及是否为空。

 $e = $_POST['email'];
 $p = $_POST['password'];

 if( empty($e) || empty($p) )     {
   header('Location: login.php?e=missing');  
   exit;  
}
else {
//more validation
}

答案 3 :(得分:0)

$e = $_POST['email'];
$p = $_POST['password'];

if(!empty($e) && !empty($p))
{
    header('Location: login.php?e=missing');
    exit();
}
else
{
    //more validation
}

答案 4 :(得分:0)

 if($e == '' || $p == ''){
        header('Location: login.php?e=missing');
    }

然后使用:

if(!isset($e) || !isset($p)){
    header('Location: login.php?e=missing');
    exit();
}

由于空格的缘故,您可以使用trim()函数删除空格并使用exit();标题后强制*