我正在检查是否$_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)
我仍然得到相同的结果.
我究竟做错了什么?
将您的支票更改为使用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.