if && not true && not true && not true return return true

Kri*_* O. 4 php if-statement

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

if(!empty($_SESSION['user'])&&!empty($_SESSION['pwd'])&&!verifyLogin($_SESSION['user'],$_SESSION['pwd'])){
Run Code Online (Sandbox Code Playgroud)

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

为什么我的if语句即使$_SESSION['user/pwd']为空也会返回true ?我不应该假回来吗?

即使我这样做:

if(!empty($_SESSION['user'])&&!empty($_SESSION['pwd'])&&verifyLogin($_SESSION['user'],$_SESSION['pwd'])==false){
Run Code Online (Sandbox Code Playgroud)

我仍然得到相同的结果.

我究竟做错了什么?

Bra*_*tie 5

将您的支票更改为使用isset结束empty.empty将返回true,它是空的,但如果它没有设置.看看这篇关于差异的帖子.

if (isset(_usr_) && !empty(_usr_) // exists and isn't empty
 && isset(_pwd_) && !empty(_pwd_)
 && verifyLogin(_usr_, _pwd_)){
}
Run Code Online (Sandbox Code Playgroud)

从手册empty():

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

即未设置将返回TRUE.