0

我创建了一个非常简单的登录页面,在提交表单后我在 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问题并解决了,但是为什么???谢谢。

4

5 回答 5

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
}
于 2012-10-04T14:03:02.863 回答
1
if($e == '' || $p == ''){
    header('Location: login.php?e=missing');
}

您需要exit()在标题行之后添加一个;否则,处理将照常继续,所有其余代码都将运行。

于 2012-10-04T14:02:59.953 回答
1

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

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

 if( empty($e) || empty($p) )     {
   header('Location: login.php?e=missing');  
   exit;  
}
else {
//more validation
}
于 2012-10-04T14:10:20.823 回答
0
$e = $_POST['email'];
$p = $_POST['password'];

if(!empty($e) && !empty($p))
{
    header('Location: login.php?e=missing');
    exit();
}
else
{
    //more validation
}
于 2012-10-04T14:06:09.137 回答
0
 if($e == '' || $p == ''){
        header('Location: login.php?e=missing');
    }

然后使用:

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

这是因为空白而发生的,或者您可以使用 trim() 函数删除空白并使用 exit(); 在标题之后是强制性的*

于 2012-10-04T14:09:18.897 回答