如果&&不是真的&&不是真的&&不是真的回归真实

时间:2012-12-28 22:00:55

标签: php if-statement

我正在检查是否填充了用户$_SESSION变量以及登录是否正确。这是我的代码:

if(!empty($_SESSION['user'])&&!empty($_SESSION['pwd'])&&!verifyLogin($_SESSION['user'],$_SESSION['pwd'])){

$_SESSION['user']是用户名,$_SESSION['pwd']是密码,verifyLogin()是我验证用户登录的功能。

为什么即使$_SESSION['user/pwd']为空,我的if语句也会返回true?难道我不能回复假吗?

即使我这样做了:

if(!empty($_SESSION['user'])&&!empty($_SESSION['pwd'])&&verifyLogin($_SESSION['user'],$_SESSION['pwd'])==false){

我仍然得到相同的结果。

我做错了什么?

1 个答案:

答案 0 :(得分:5)

将您的支票更改为使用isset而不是emptyempty将返回true,它也是空的,但如果没有设置则返回。查看this post about the difference

if (isset(_usr_) && !empty(_usr_) // exists and isn't empty
 && isset(_pwd_) && !empty(_pwd_)
 && verifyLogin(_usr_, _pwd_)){
}

来自empty()的手册:

  

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

即。未设置将返回TRUE