为什么这个变量总是返回true?
问题描述:
我想写一个登录脚本。登录会话变量后,在主页面上运行isLoggedIn函数。问题是,变量$ loggedIn总是返回true。有人可以帮忙吗?为什么这个变量总是返回true?
function validateUser($user)
{
if(isset($user)){
session_regenerate_id();//this is a security measure
$_SESSION['logged'] = 1;
$_SESSION['userid'] = $user;}
}
//Validates Login
function isLoggedIn()
{
if($_SESSION['logged'] = 1)
return true;
return false;
}
$loggedIn = isLoggedIn();
if($loggedIn){ SHOW CONTENT FOR LOGGED IN USERS }
else { show content for users not logged in }
答
您正在使用赋值运算符=
代替条件运算==
。
它应该是:
if ($_SESSION['logged'] == 1)
return true;
分配=
的结果是右手边的表达,这是1,这始终是在这种情况下,真实的。 :)
答
这是因为你设置$ _SESSION ['logged']与单个等于。使用双等号,而不是:
function isLoggedIn()
{
if($_SESSION['logged'] == 1)
return true;
return false;
}
答
不是这个如果($ _ SESSION [ '记录'] = 1) 这是正确的 - >如果($ _ SESSION [ '记录'] == 1)
答
功能isLoggedIn() { 如果($ _ SESSION [ '记录'] = 1)//分配值 '1' 至$ _SESSION [ '记录']因此,在此,如果条件是检查是否有任何值为$ _SESSION ['logged'],对于所有的情况都是如此(有效/无效) 返回true; 返回false; }
$的loggedIn = isLoggedIn(); /那些$的loggedIn的值将是总是如此
变化如果($ _ SESSION [ '记录'] = 1)到如果($ _ SESSION ['登录'] == 1)
谢谢,那没有工作,但$ loggedIn总是打印值“1”是有原因吗? – mcbeav 2010-12-22 06:16:02
是的,因为您将$ loggedIn的值设置为`true`,这在PHP中与`1`相呼应。 – RabidFire 2010-12-22 06:19:06