我正在检查是否填充了用户$_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){
我仍然得到相同的结果。
我做错了什么?
答案 0 :(得分:5)
将您的支票更改为使用isset
而不是empty
。 empty
将返回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
。