4

我正在检查是否$_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){

我仍然得到相同的结果。

我究竟做错了什么?

4

1 回答 1

5

更改您的支票以使用issetover emptyempty如果它是空的,将返回 true,但如果它没有设置。查看这篇关于差异的帖子

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

从手册empty()

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

即未设置将返回TRUE

于 2012-12-28T22:06:07.157 回答