我正在检查是否填充了用户 $_SESSION
变量以及登录是否正确。这是我的代码:
if(!empty($_SESSION['user'])&&!empty($_SESSION['pwd'])&&!verifyLogin($_SESSION['user'],$_SESSION['pwd'])){
$_SESSION['user']
是用户名,$_SESSION['pwd']
是密码,verifyLogin()
是我的函数用于验证用户的登录。
为什么即使 $_SESSION['user/pwd']
为空,我的 if 语句也会返回 true?我不应该返回 false 吗?
即使我这样做:
if(!empty($_SESSION['user'])&&!empty($_SESSION['pwd'])&&verifyLogin($_SESSION['user'],$_SESSION['pwd'])==false){
我仍然得到相同的结果。
我做错了什么?
最佳答案
更改支票以使用 isset
在空
。 empty
将在它为空时返回 true,但如果它未设置也会返回 true。查看this post about the difference .
if (isset(_usr_) && !empty(_usr_) // exists and isn't empty
&& isset(_pwd_) && !empty(_pwd_)
&& verifyLogin(_usr_, _pwd_)){
}
来自 empty()
的手册:
Returns FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.
即未设置将返回 TRUE
。
关于php - 如果 && 不正确 && 不正确 && 不正确返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076359/