为什么这个变量总是返回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,这始终是在这种情况下,真实的。 :)

+0

谢谢,那没有工作,但$ loggedIn总是打印值“1”是有原因吗? – mcbeav 2010-12-22 06:16:02

+0

是的,因为您将$ loggedIn的值设置为`true`,这在PHP中与`1`相呼应。 – RabidFire 2010-12-22 06:19:06

这是因为你设置$ _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)